PHP array_map() ist eine Funktion, die es ermöglicht, eine bestimmte Funktion auf jedes Element eines Arrays anzuwenden. Mithilfe der array_map()-Funktion lassen sich mehrere Arrays ineinander überführen.
Syntax:
array_map ( callback $callback , array $array1 [, array $... ] ) : array
Parameter-Liste:
- callback (erforderlich): Der Name der Funktion oder das Callback-Array, welches verwendet wird, um die Elemente des Arrays zu bearbeiten.
- Array1 (erforderlich): Das Array, auf das die Callback-Funktion angewendet werden soll. Sie können mehrere Arrays angeben und diese als Parameter übergeben. Die Anzahl der Parameter muss gleich sein mit der Anzahl der übergebene Array.
Rückgabewerte:
Gibt ein Array zurück, dessen Werte vom Rückgabewert des Callbacks bestimmt werden. Wenn kein Array angegeben wurde, gibt die Funktion NULL zurück und bei fehlgeschlagener Ausführung FALSE.
Beispielcode für Verwendung von mehrerer Arrays:
<?php
/**
* Erstes Array mit 3 Elementen
*/
$array1 = [1, 2 , 3];
/**
* Zweites Array mit 3 Elementen
*/
$array2 = [4 , 5 , 6];
$result= array_map(function($n){
/**
* Callback Funktionsübergabe ist „n“ hier definiert und hat den Parameter
* „n“ – das heißt jedes Mal, wenn diese Funktion aufgerufen wird,
* bekommt sie als Input 1 Wert von dem jeweiligen Array welche
* an diesem Index steht ($n). In unserem Fall kann es entweder
* 1, 2 oder 3 sein. Dieses Ergebnis soll in dem neuen result Array
* gespeichert werden.
*/
/**
* multipliziere jeden Wert mal 10 und speichere es im Result-Array ab
*/
return ($n * 10);
}, $array1, $array2 );
/**
* Übergabe von beiden Arrays an die Funktion und Speicherung im Result-Array ab.
*/
print_r($result);
?>
Ausgabe des Result-Arrays:
[10 20 30 40 50 60]
Dieser PHP-Code erstellt zwei Arrays mit jeweils drei Elementen und speichert diese in den Variablen $array1 und $array2. Anschließend wird eine selbst definierte Callback-Funktion definiert, welche jeden Wert der beiden Arrays mit 10 multipliziert und das Ergebnis in einem neuen Array namens $result speichert. Am Ende wird dieses Ergebnis mit print_r() angezeigt.
Beispiel für die Verwendung von PHP-array_map() mit einem Array von Objekten:
<?php
/**
* Dies ist ein Array von Objekten
*/
$arr =[ new Person('John', 'Smith'), new Person('Mary', 'Jones') ];
/**
* Aufruf der Funktion getName und Übergabe von $arr
*/
$namesArr=array_map('getName', $arr);
echo "<pre>";
var_dump($namesArr);
echo "</pre>" ;
?>
Dieses Beispiel gibt die folgende Ausgabe:
array (size=2){[0] => string (8)"John Smith", [1] => string (9)"Mary Jones"}
In diesem Beispiel haben wir ein Array mit Objekten erstellt und anschließend mithilfe der Funktion array_map() aufgerufen. Mit dieser Funktion können wir einen Callback auf jedes Element des Arrays anwenden und so das Ergebnis manipulieren. In unserem Fall haben wir die Funktion ‘getName’ als Callback übergeben, welche jedes Element des Arrays verarbeitet hat. Anschließend hat uns die Funktion ein neues Array zurückgegeben, bestehend aus den Namen der Personen im Original-Array. Dies wird danach mit var_dump() ausgeben.
Häufige Fragen zu array_map()
- Was ist die Funktion von array_map() in PHP?
- Dies ist eine Funktion in PHP, die es ermöglicht, eine angegebene Funktion auf jedes Element eines Arrays anzuwenden.
- Wie wird array_map() verwendet?
- array_map() wird verwendet, um auf alle Elemente eines Arrays mittels der übergebenen Callback-Funktion zu iterieren und das Ergebnis als neues Array zurückzugeben.
- Welche Rückgabewerte liefert array_map()?
- array_map() gibt ein neues Array mit den Ergebnissen der angewandten Callback-Funktion zurück.
- Wie viele Parameter erwartet array_map()?
- Diese erwartet mindestens zwei Parameter; die anzuwendende Callback-Funktion und das Quellarray selbst.
- Was passiert, wenn man mehr als zwei Parameter übergibt?
- Werden mehr als zwei Parameter übermittelt, werden diese sequenziell an jedes Element des Arrays übermittelt und gleichzeitig angewandt, bis alle Elemente bearbeitet sind.
- Kann man mit array_map () Objekte bearbeiten?
- Ja, Objekte können mit array_map () bearbeitet werden – allerdings nicht direkt; Sie müssen vorher in Strings oder andere geeignete Datentypen umgewandelt werden.
- Gibt es Alternativen für die Verarbeitung von Arrays in PHP?
- Kann man bei der Verarbeitung von objektorientiertem Code mithilfe von array_map() Erfolg haben?
- Nein, da objektorientierter Code nicht direkt unterstützt wird, muss man ihn vorher in Strings oder andere geeignete Datentypen, umformulieren, bevor man ihn mithilfe von array_map() verarbeiten kann.