array_map
(PHP 4 >= 4.0.6, PHP 5)
array_map --
Past de callback functie toe op de elementen van de gegeven arrays
Beschrijving
array
array_map ( callback function, array arr1 [, array arr2...] )
array_map() geeft een array terug met
daarin alle elementen van arr1
nadat de
callback function
is toegepast op elk element.
Het aantal parameters dat de callback function
krijgt zou gelijk moeten zijn aan het aantal arrays dat wordt meegegeven
aan array_map().
Voorbeeld 1. array_map() voorbeeld
<?php function cube($n) { return $n*$n*$n; }
$a = array(1, 2, 3, 4, 5); $b = array_map("cube", $a); print_r($b); ?>
|
$b heeft nu de volgende waarde:
Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
) |
|
Voorbeeld 2. array_map() - met meer arrays
<?php function show_Spanish($n, $m) { return "Het getal $n wordt $m genoemd in het Spaans"; }
function map_Spanish($n, $m) { return array ($n => $m); }
$a = array(1, 2, 3, 4, 5); $b = array("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); ?>
|
Dit resulteert in:
// printout of $c
Array
(
[0] => Het getal 1 wordt uno genoemd in het Spaans
[1] => Het getal 2 wordt dos genoemd in het Spaans
[2] => Het getal 3 wordt tres genoemd in het Spaans
[3] => Het getal 4 wordt cuatro genoemd in het Spaans
[4] => Het getal 5 wordt cinco genoemd in het Spaans
)
// Printout van $d
Array
(
[0] => Array
(
[1] => uno
)
[1] => Array
(
[2] => dos
)
[2] => Array
(
[3] => tres
)
[3] => Array
(
[4] => cuatro
)
[4] => Array
(
[5] => cinco
)
) |
|
Wanneer er twee of meer arrays gebruikt worden zijn ze normaal even lang,
omdat de callback functie wordt toegepast in parallel op de
corresponderende elementen. Als de arrays van ongelijke lengte zijn
zal de kortste worden opgevuld met lege elementen.
Een interessante manier om deze functie te gebruiken is om een array
van arrays te bouwen, hetgeen makkelijk kan worden gedaan door NULL
te gebruiken als naam voor de callback functie.
Voorbeeld 3. Een array van arrays maken
<?php $a = array(1, 2, 3, 4, 5); $b = array("one", "two", "three", "four", "five"); $c = array("uno", "dos", "tres", "cuatro", "cinco");
$d = array_map(null, $a, $b, $c); print_r($d); ?>
|
|
De output van het bovenstaande programma ziet er zo uit:
Array
(
[0] => Array
(
[0] => 1
[1] => one
[2] => uno
)
[1] => Array
(
[0] => 2
[1] => two
[2] => dos
)
[2] => Array
(
[0] => 3
[1] => three
[2] => tres
)
[3] => Array
(
[0] => 4
[1] => four
[2] => cuatro
)
[4] => Array
(
[0] => 5
[1] => five
[2] => cinco
)
) |
Zie ook array_filter(),
array_reduce(), en
array_walk().