In PHP wird die Funktion array_filter () verwendet, um Elemente in einem Array zu filtern und festzustellen, ob das Element gemäß der angegebenen Rückruffunktion aufbewahrt werden soll. Wenn keine Rückruffunktion angegeben ist, verwendet Array_filter () die Standard -Rückruffunktion, um das Array zu filtern, das als "falsche Werte" bezeichnete Elemente löscht. "False Werte" in PHP gehören: false , null , 0 , "" (leere Zeichenfolge), Array () (leeres Array) und 0,0 .
Wenn Sie array_filter () in PHP verwenden, wird der Elementwert im Array 0 als falscher Wert angesehen und gelöscht. Um dieses Problem besser zu verstehen, können wir ein konkretes Beispiel verwenden, um das Verhalten von Array_Filter () anzuzeigen.
<?php
$array = [0, 1, 2, 3, 0, 4, 5, 0];
$filtered = array_filter($array);
print_r($filtered);
?>
Ausgabe:
Array
(
[1] => 1
[2] => 2
[3] => 3
[5] => 4
[6] => 5
)
Im obigen Code erstellen wir ein Array, das mehrere ganze Zahlen enthält, die mehrere 0 Elemente enthalten. Wenn wir Array_filter () verwenden, werden alle Elemente mit einem Wert von 0 gelöscht, da 0 als falscher Wert angesehen wird.
Dies liegt daran, dass das Standardverhalten der Funktion array_filter () darin besteht, alle als "falschen Werte" betrachteten Elemente aus dem Array zu entfernen. Die Konvertierungsregeln von PHP bestimmen, dass 0 ein falscher Wert ist. Insbesondere wird 0 in False konvertiert, und Falsch verursacht Array_filter (), das Element zu löschen.
Wenn Sie Elemente mit einem Wert von 0 aufbewahren möchten, können Sie dies tun, indem Sie eine benutzerdefinierte Rückruffunktion bereitstellen. Zum Beispiel:
<?php
$array = [0, 1, 2, 3, 0, 4, 5, 0];
$filtered = array_filter($array, function($value) {
return $value === 0 || $value > 0;
});
print_r($filtered);
?>
Ausgabe:
Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[5] => 4
[6] => 5
[7] => 0
)
In diesem Beispiel verwenden wir eine benutzerdefinierte Rückruffunktion, um sicherzustellen, dass das Element mit einem Wert von 0 beibehalten wird, während die anderen Elemente gemäß unserer Logik gefiltert werden.
Bei Verwendung von Array_filter () werden Elemente mit einem Wert von 0 gelöscht, da PHP 0 als falschen Wert behandelt. In Abwesenheit einer Rückruffunktion löscht Array_filter () diese falschen Werte automatisch. Wenn Sie 0 oder andere spezifische Werte aufbewahren müssen, können Sie eine benutzerdefinierte Rückruffunktion zur Steuerung des Filterverhaltens bereitstellen.