array_map
Wendet eine Callback-Funktion auf die Elemente von Arrays an
&reftitle.description;
arrayarray_map
callablenullcallback
arrayarray
arrayarrays
array_map gibt ein &array; zurück, das die Ergebnisse
der Anwendung der Callback-Funktion callback auf den
entsprechenden Wert von array (und
arrays, wenn weitere Arrays angegeben wurden) als
Callback-Argumente enthält. Die Anzahl Parameter, welche
callback akzeptiert, sollte der Anzahl der an
array_map übergebenen Arrays entsprechen. Überzählige
Eingabe-Arrays werden ignoriert. Wenn eine zu geringe Anzahl von Argumenten
übergeben wird, wird ein ArgumentCountError-Fehler
ausgelöst.
&reftitle.parameters;
callback
Ein callable, das für jedes Element in jedem Array
aufgerufen werden soll.
&null; kann als Wert an callback übergeben
werden, um eine zip-Operation auf mehrere Arrays durchzuführen und ein
Array zurückzugeben, dessen Elemente jeweils Arrays sind, die die
Elemente der Eingabe-Arrays an derselben Position wie der interne
Array-Zeiger enthalten (siehe Beispiel unten).
Wird nur array übergeben, gibt
array_map das Eingabe-Array zurück.
array
Ein Array, auf das die callback-Funktion
angewendet werden soll.
arrays
Zusätzliche variable Liste von Array-Argumenten, auf die die
callback-Funktion angewendet werden soll.
&reftitle.returnvalues;
array_map gibt ein Array zurück, das die Ergebnisse
der Anwendung der callback-Funktion auf den
entsprechenden Wert von array (und
arrays, wenn weitere Arrays angegeben wurden) als
Callback-Argumente enthält.
Das zurückgegebene Array behält die Schlüssel des Array-Arguments nur bei,
wenn genau ein Array übergeben wurde. Wird mehr als ein Array übergeben,
hat das zurückgegebene Array aufeinanderfolgende Integer-Schlüssel.
&reftitle.changelog;
&Version;
&Description;
&array.changelog.by-ref;
&reftitle.examples;
array_map-Beispiel
]]>
Dies speichert in $b:
1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)
]]>
array_map mit einer Lambda-Funktion
$value * 2, range(1, 5)));
?>
]]>
&example.outputs;
2
[1] => 4
[2] => 6
[3] => 8
[4] => 10
)
]]>
array_map - Verwendung mehrerer Arrays
$m];
}
$a = [1, 2, 3, 4, 5];
$b = ['uno', 'dos', 'tres', 'cuatro', 'cinco'];
$c = array_map('show_Spanish', $a, $b);
print_r($c);
$d = array_map('map_Spanish', $a , $b);
print_r($d);
?>
]]>
&example.outputs;
Die Zahl 1 heißt auf Spanisch uno
[1] => Die Zahl 2 heißt auf Spanisch dos
[2] => Die Zahl 3 heißt auf Spanisch tres
[3] => Die Zahl 4 heißt auf Spanisch cuatro
[4] => Die Zahl 5 heißt auf Spanisch cinco
)
// Ausgabe von $d
Array
(
[0] => Array
(
[1] => uno
)
[1] => Array
(
[2] => dos
)
[2] => Array
(
[3] => tres
)
[3] => Array
(
[4] => cuatro
)
[4] => Array
(
[5] => cinco
)
)
]]>
Bei Verwendung von zwei oder mehr Arrays sollten diese die gleiche Länge
besitzen, da die Callback-Funktion parallel auf die entsprechenden Elemente
angewandt wird. Haben die Arrays unterschiedliche Längen, werden die
kürzeren um leere Elemente erweitert, um mit der Länge des längsten
übereinzustimmen.
Eine interessante Anwendung dieser Funktion ist die Konstruktion eines
Arrays bestehend aus Arrays, was mit &null; als Name der Callback-Funktion
leicht realisiert werden kann.
Durchführen einer zip-Operation von Arrays
]]>
&example.outputs;
Array
(
[0] => 1
[1] => eins
[2] => uno
)
[1] => Array
(
[0] => 2
[1] => zwei
[2] => dos
)
[2] => Array
(
[0] => 3
[1] => drei
[2] => tres
)
[3] => Array
(
[0] => 4
[1] => vier
[2] => cuatro
)
[4] => Array
(
[0] => 5
[1] => fünf
[2] => cinco
)
)
]]>
&null;-callback mit nur einem array
]]>
&example.outputs;
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
]]>
array_map - mit String-Schlüsseln
'value'];
function cb1($a) {
return [$a];
}
function cb2($a, $b) {
return [$a, $b];
}
var_dump(array_map('cb1', $arr));
var_dump(array_map('cb2', $arr, $arr));
var_dump(array_map(null, $arr));
var_dump(array_map(null, $arr, $arr));
?>
]]>
&example.outputs;
array(1) {
[0]=>
string(5) "value"
}
}
array(1) {
[0]=>
array(2) {
[0]=>
string(5) "value"
[1]=>
string(5) "value"
}
}
array(1) {
["stringkey"]=>
string(5) "value"
}
array(1) {
[0]=>
array(2) {
[0]=>
string(5) "value"
[1]=>
string(5) "value"
}
}
]]>
array_map - assoziative Arrays
Die array_map unterstützt die Verwendung des
Array-Schlüssels als Eingabe zwar nicht direkt, aber dies kann mit
array_keys simuliert werden.
'erste Version',
'v2' => 'zweite Version',
'v3' => 'dritte Version',
];
// Hinweis: Vor 7.4.0 ist stattdessen die längere Syntax für anonyme
// Funktionen zu verwenden.
$callback = fn(string $k, string $v): string => "$k war die $v";
$result = array_map($callback, array_keys($arr), array_values($arr));
var_dump($result);
?>
]]>
&example.outputs;
string(24) "v1 war die erste Version"
[1]=>
string(25) "v2 war die zweite Version"
[2]=>
string(25) "v3 war die dritte Version"
}
]]>
&reftitle.seealso;
array_filter
array_reduce
array_walk