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 mehrere Werte in einem Array löschen müssen und die Einträge in diesem Array Objekte oder strukturierte Daten sind, array_filter()
ist die beste Wahl. Die Einträge, die von der Callback-Funktion ein true zurückgeben, werden beibehalten.
$array = [
['x'=>1,'y'=>2,'z'=>3],
['x'=>2,'y'=>4,'z'=>6],
['x'=>3,'y'=>6,'z'=>9]
];
$results = array_filter($array, function($value) {
return $value['x'] > 2;
}); //=> [['x'=>3,'y'=>6,z=>'9']]
Wenn Sie mehrere Elemente aus einem assoziativen Array entfernen müssen, können Sie array_diff_key() (hier verwendet mit array_flip() ):
$my_array = array(
"key1" => "value 1",
"key2" => "value 2",
"key3" => "value 3",
"key4" => "value 4",
"key5" => "value 5",
);
$to_remove = array("key2", "key4");
$result = array_diff_key($my_array, array_flip($to_remove));
print_r($result);
Ausgabe:
Array ( [key1] => value 1 [key3] => value 3 [key5] => value 5 )
Für assoziative Arrays verwenden Sie unset
:
$arr = array('a' => 1, 'b' => 2, 'c' => 3);
unset($arr['b']);
// RESULT: array('a' => 1, 'c' => 3)
Für numerische Arrays verwenden Sie array_splice
:
$arr = array(1, 2, 3);
array_splice($arr, 1, 1);
// RESULT: array(0 => 1, 1 => 3)
Verwendung von unset
für numerische Arrays führt nicht zu einem Fehler, aber es wird Ihre Indizes durcheinander bringen:
$arr = array(1, 2, 3);
unset($arr[1]);
// RESULT: array(0 => 1, 2 => 3)
unset()
vernichtet die angegebenen Variablen.
Das Verhalten von unset()
innerhalb einer Funktion kann variieren, je nachdem, welche Art von Variable Sie zu zerstören versuchen.
Wenn eine globalisierte Variable unset()
innerhalb einer Funktion, wird nur die lokale Variable zerstört. Die Variable in der aufrufenden Umgebung behält den gleichen Wert wie zuvor unset()
genannt wurde.
<?php
function destroy_foo()
{
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>
Die Antwort des obigen Codes lautet bar .
An unset()
eine globale Variable innerhalb einer Funktion:
<?php
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
?>
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).