Forum und email

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().

Example#1 array_map() voorbeeld

<?php
function cube($n) {
    return 
$n*$n*$n;
}

$a = array(12345);
$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
)

Example#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(12345);
$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.

Example#3 Een array van arrays maken

<?php
$a 
= array(12345);
$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().