PHP array_map() ist eine Funktion, die es ermöglicht, eine bestimmte Funktion auf jedes Element eines Arrays anzuwenden. Die Funktion gibt ein neues Array zurück, dessen Werte vom Rückgabewert des Callbacks bestimmt werden.
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 übergebenen Arrays.
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.
Beispiel: Jeden Array-Wert mit 10 multiplizieren
<?php
/**
* Erstes Array mit 3 Elementen
*/
$array1 = [1, 2 , 3];
$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);
/* Ausgabe des Ergebnis-Arrays */
print_r($result);
?>
Ausgabe des Result-Arrays:
Array ( [0] => 10 [1] => 20 [2] => 30 )
Dieser PHP-Code erstellt ein Array mit drei Zahlen. Anschließend wird eine selbst definierte Callback-Funktion definiert, welche jeden Wert mit 10 multipliziert. Das Ergebnis wird im Array $result gespeichert und mit print_r() angezeigt.
Beispiel für die Verwendung von PHP-array_map() mit einem Array von Objekten:
<?php
class Person {
public string $firstName;
public string $lastName;
public function __construct(string $first, string $last) {
$this->firstName = $first;
$this->lastName = $last;
}
}
function getName(Person $p): string {
return $p->firstName . ' ' . $p->lastName;
}
/* Array von Person-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(2) {
[0]=>
string(10)"John Smith", [1]=>
string(10)"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,
array_map() arbeitet problemlos mit Objekten. Die Callback-Funktion erhält jedes Objekt als Parameter und kann dessen Methoden und Eigenschaften nutzen, wie das Beispiel mit der Person-Klasse oben zeigt.
- 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?
- Doch,
array_map() funktioniert vollständig mit objektorientiertem Code. Als Callback können Closures, statische Methoden ([Klasse::class, 'methode']) oder benannte Funktionen verwendet werden.