Heim >Backend-Entwicklung >PHP-Tutorial >Wie unterscheiden sich array_map, array_walk und array_filter in ihrem Verhalten und ihrer Verwendung in PHP?

Wie unterscheiden sich array_map, array_walk und array_filter in ihrem Verhalten und ihrer Verwendung in PHP?

DDD
DDDOriginal
2024-11-03 13:06:031026Durchsuche

How do array_map, array_walk, and array_filter differ in their behavior and usage in PHP?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn