Gibt es eine einfache Möglichkeit, ein Element aus einem Array mit PHP zu löschen, so dass foreach ($array)
dieses Element nicht mehr enthält?
Ich dachte, dass die Einstellung auf null
würde es tun, aber offenbar funktioniert es nicht.
Gibt es eine einfache Möglichkeit, ein Element aus einem Array mit PHP zu löschen, so dass foreach ($array)
dieses Element nicht mehr enthält?
Ich dachte, dass die Einstellung auf null
würde es tun, aber offenbar funktioniert es nicht.
Wenn Sie ein numerisch indiziertes Array haben, in dem alle Werte eindeutig sind (oder sie sind nicht eindeutig, aber Sie möchten alle Instanzen eines bestimmten Wertes entfernen), können Sie einfach array_diff() verwenden, um ein übereinstimmendes Element zu entfernen, etwa so:
$my_array = array_diff($my_array, array('Value_to_remove'));
Zum Beispiel:
$my_array = array('Andy', 'Bertha', 'Charles', 'Diana');
echo sizeof($my_array) . "\n";
$my_array = array_diff($my_array, array('Charles'));
echo sizeof($my_array);
Es wird Folgendes angezeigt:
4
3
In diesem Beispiel wird das Element mit dem Wert "Charles" entfernt, wie durch die sizeof()-Aufrufe überprüft werden kann, die eine Größe von 4 für das ursprüngliche Array und 3 nach dem Entfernen melden.
Ein einzelnes Element eines Arrays zerstören
unset()
$array1 = array('A', 'B', 'C', 'D', 'E');
unset($array1[2]); // Delete known index(2) value from array
var_dump($array1);
Die Ausgabe wird sein:
array(4) {
[0]=>
string(1) "A"
[1]=>
string(1) "B"
[3]=>
string(1) "D"
[4]=>
string(1) "E"
}
Wenn Sie das Array neu indizieren müssen:
$array1 = array_values($array1);
var_dump($array1);
Dann wird die Ausgabe sein:
array(4) {
[0]=>
string(1) "A"
[1]=>
string(1) "B"
[2]=>
string(1) "D"
[3]=>
string(1) "E"
}
Das Element am Ende des Arrays ausblenden - den Wert des entfernten Elements zurückgeben
mixed array_pop(array &$array)
$stack = array("orange", "banana", "apple", "raspberry");
$last_fruit = array_pop($stack);
print_r($stack);
print_r('Last Fruit:'.$last_fruit); // Last element of the array
Die Ausgabe wird sein
Array
(
[0] => orange
[1] => banana
[2] => apple
)
Last Fruit: raspberry
Das erste Element (rot) aus einem Array entfernen , - Rückgabe des Wertes des entfernten Elements
mixed array_shift ( array &$array )
$color = array("a" => "red", "b" => "green" , "c" => "blue");
$first_color = array_shift($color);
print_r ($color);
print_r ('First Color: '.$first_color);
Die Ausgabe wird sein:
Array
(
[b] => green
[c] => blue
)
First Color: red
Wenn der Index angegeben ist:
$arr = ['a', 'b', 'c'];
$index = 0;
unset($arr[$index]); // $arr = ['b', 'c']
Wenn wir Wert anstelle von Index haben:
$arr = ['a', 'b', 'c'];
// search the value to find index
// Notice! this will only find the first occurrence of value
$index = array_search('a', $arr);
if($index !== false){
unset($arr[$index]); // $arr = ['b', 'c']
}
El if
Bedingung ist notwendig denn wenn index
wird nicht gefunden, unset()
wird automatisch gelöscht das erste Element des Arrays, was nicht erwünscht ist.
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.
17 Stimmen
Ich würde nicht sagen, dass Konrads Antwort die einfachste auf das genannte Problem ist. Mit
unset()
werden die Iterationen über das Array den entfernten Wert nicht mehr enthalten. OTOH, es ist wahr, dass Stevan Antwort ist reichlich und, tatsächlich, war die Antwort, die ich gesucht habe - aber nicht die OP :)48 Stimmen
@danip Dass es im Handbuch leicht zu finden ist, schließt eine Frage auf StackOverflow nicht aus. Wäre die Frage eine duplicado StackOverflow-Frage, dann gehört sie vielleicht nicht hierher. StackOverflow ist ein guter Ort, um Antworten zu finden, noch bevor Sie im Handbuch nachsehen.
7 Stimmen
@unset($array[$key]); $array = array_values($array);
0 Stimmen
Verwandte Frage über das Entfernen dieser in einer foreach-Schleife: stackoverflow.com/questions/1949259/
2 Stimmen
Wenn Sie Schlüssel aus einem Array eines Arrays (assoziatives Array) entfernen möchten, finden Sie die Lösung unter stackoverflow.com/a/47978980/1045444
2 Stimmen
Können Sie dies in einer foreach-Schleife wie folgt tun: pastefs.com/pid/130950
3 Stimmen
Das Setzen eines Array-Schlüsselwerts auf null bedeutet einfach, dass ein Schlüssel mit einem Nullwert enthalten ist. Der Schlüssel existiert weiterhin.
0 Stimmen
@Aurangzeb, der Code funktioniert einwandfrei (sollte eine Antwort sein und ich würde ihn wegen seiner Einfachheit hoch bewerten).