24 Stimmen

Array-Element innerhalb einer foreach-Schleife ungesetzt

Hier ist also mein Code:

<?php

$arr = array(array(2 => 5),
             array(3 => 4),
             array(7 => 10));

foreach ($arr as $v) {
    $k = key($v);
    if ($k > 5) {
        // unset this element from $arr array
    }
}

print_r($arr);

// now I would like to get the array without array(7 => 10) member

Wie Sie sehen können, beginne ich mit einem Array von Arrays mit einzelnen Schlüsseln => Werten, durchlaufe dieses Array und erhalte einen Schlüssel des aktuellen Elements (das ein Array mit einzelnen Elementen ist).

Ich muss Elemente des Arrays mit Schlüssel höher als 5 zurücksetzen, wie könnte ich das tun? Möglicherweise muss ich auch Elemente mit einem Wert von weniger als 50 oder eine andere Bedingung entfernen. Grundsätzlich muss ich in der Lage sein, einen Schlüssel des aktuellen Array-Elements zu erhalten, das selbst ein Array mit einem einzelnen Element ist.

52voto

sasa Punkte 2425
foreach($arr as $k => $v) {
    if(key($v) > 5) {
        unset($arr[$k]);
    }
}

17voto

Es es sicher in PHP, um Elemente aus einem Array zu entfernen, während man mit der foreach-Schleife darüber iteriert:

foreach ($arr as $key => $value) {
    if (key($value) > 5) {
        unset($arr[$key]);
    }
}

2voto

Amber Punkte 473552

Utilice key() um den ersten Schlüssel aus dem Subarray zu erhalten.

foreach($arr as $k => $v) {
    if(key($v) > 5) {
        unset($arr[$k]);
    }
}

0voto

Robert McBean Punkte 67

Es ist nicht wirklich sicher, einer Sammlung etwas hinzuzufügen oder aus ihr zu löschen, während man sie durchläuft. Wie wäre es, wenn Sie die gewünschten Elemente zu einem zweiten Array hinzufügen und dann das Original löschen?

0voto

Um ein Array-Element zu löschen, verwenden wir unset() und eine php-Funktion wie unten:

foreach($array as $key=>$value)
{
   if(key($value) > 5) 
   {
      unset($array[$key]);
   }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X