Unterscheidung von array_map, array_walk und array_filter in PHP
Obwohl array_map, array_walk und array_filter allesamt PHP-Funktionen sind, die eine Callback-Funktion als Funktion verwenden Argument, um eine Aktion auf einem Array auszuführen, gibt es subtile Unterschiede in ihrem Verhalten und ihrer Verwendung.
Hauptunterschiede:
1. Wertänderung:
array_map kann die Werte innerhalb des Eingabearrays nicht ändern, während array_walk dies kann. Dies liegt daran, dass array_map ein neues Array mit den Ergebnissen der Rückruffunktion erstellt, während array_walk das Eingabearray an Ort und Stelle ändert.
2. Zugriff auf Array-Schlüssel:
array_map kann nicht mit Array-Schlüsseln arbeiten, während array_walk dies kann. Dies bedeutet, dass array_walk Operationen basierend auf den Werten und Schlüsseln des Arrays ausführen kann.
3. Rückgabewert:
array_map gibt ein neues Array zurück, das die Ergebnisse der Callback-Funktion enthält, während array_walk true zurückgibt, wenn die Callback-Funktion erfolgreich auf alle Elemente des Eingabearrays angewendet wurde.
4. Mehrere Array-Iterationen:
array_map kann mehrere Arrays als Eingabe akzeptieren und parallel darüber iterieren, was Operationen auf mehreren Arrays gleichzeitig ermöglicht. array_walk hingegen arbeitet nur mit einem Array.
5. Übergabe von Rückrufargumenten:
array_walk ermöglicht die Übergabe eines zusätzlichen beliebigen Parameters an die Rückruffunktion und bietet so Flexibilität bei den im Rückruf ausgeführten Aktionen.
6. Zurückgegebene Array-Länge:
array_map erzeugt ein Ergebnis-Array mit der gleichen Länge wie das größte Eingabe-Array. array_walk gibt kein Array zurück und kann die Anzahl der Elemente im Eingabearray nicht ändern. array_filter gibt eine Teilmenge des ursprünglichen Arrays basierend auf der Filterfunktion zurück und behält die ursprünglichen Schlüssel bei.
Beispiel:
Betrachten Sie den folgenden Code:
<code class="php">$a1 = array(2.4, 2.6, 3.5); $a2 = array(2.4, 2.6, 3.5); array_map('floor', $a1); // $a1 remains unchanged array_walk($a2, function (&$v) { $v = floor($v); }); // modifies $a2</code>
Im ersten Fall erstellt array_map ein neues Array mit den Grundwerten jedes Elements in $a1, aber $a1 selbst bleibt unverändert. Im zweiten Fall ändert array_walk die Elemente von $a2 direkt, indem es sie auf die nächste ganze Zahl abrundet.
Das obige ist der detaillierte Inhalt vonWie unterscheiden sich array_map, array_walk und array_filter in ihrem Verhalten und ihrer Verwendung in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!