(PHP 4 >= 4.0.6, PHP 5, PHP 7)
array_map — Applique une fonction sur les éléments d'un tableau
array_map() retourne un tableau contenant
les résultats de l'application de la fonction de rappel
callback
à l'index correspondant de
array1
(et ...
si plus de
tableaux sont fourni) utilisé en tant qu'arguments pour la fonction de rappel.
Le nombre de paramètres que la fonction de rappel callback
accepte devrait correspondre au nombre de tableaux passé à
array_map().
callback
La fonction de rappel à exécuter pour chaque élément de chaque tableau.
NULL
peut être passé comme valeur à callback
pour executer une opération zip sur plusieurs tableaux.
Si seulement array1
est fourni,
array_map() retournera le tableau d'entré.
array1
Un tableau à exécuter via la fonction de rappel callback
.
...
Liste variable d'arguments tableaux supplémentaires à exécuter via
la fonction de rappel callback
.
Retourne un tableau contenant les résultats de l'application de la fonction
de rappel callback
à l'index correspondant de
array1
(et ...
si plus de
tableaux sont fourni) utilisé en tant qu'arguments pour la fonction de rappel.
Exemple #1 Exemple avec array_map()
<?php
function cube($n)
{
return ($n * $n * $n);
}
$a = [1, 2, 3, 4, 5];
$b = array_map('cube', $a);
print_r($b);
?>
Le contenu de la variable $b sera :
Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )
Exemple #2 array_map() : utilisation d'une fonction quelconque (depuis PHP 5.3.0)
<?php
$func = function($value) {
return $value * 2;
};
print_r(array_map($func, range(1, 5)));
?>
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
Exemple #3 array_map() : utilisation de plusieurs tableaux
<?php
function show_Spanish($n, $m)
{
return "Le nombre {$n} se dit {$m} en Espagnol";
}
function map_Spanish($n, $m)
{
return [$n => $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);
?>
L'exemple ci-dessus va afficher :
// Contenu de $c Array ( [0] => Le nombre 1 se dit uno en Espagnol [1] => Le nombre 2 se dit dos en Espagnol [2] => Le nombre 3 se dit tres en Espagnol [3] => Le nombre 4 se dit cuatro en Espagnol [4] => Le nombre 5 se dit cinco en Espagnol ) // Contenu de $d Array ( [0] => Array ( [1] => uno ) [1] => Array ( [2] => dos ) [2] => Array ( [3] => tres ) [3] => Array ( [4] => cuatro ) [4] => Array ( [5] => cinco ) )
Généralement, lors de l'utilisation de plusieurs tableaux, ils doivent être d'égale longueur, car la fonction de rappel est appliquée de manière similaire à tous les tableaux. Si les tableaux sont de tailles inégales, les plus petits seront complétés avec des éléments vides pour atteindre la taille du plus grand.
Une utilisation intéressante de cette fonction est la construction
de tableaux de tableaux, facilement réalisée en passant la valeur
NULL
comme nom de fonction de rappel.
Exemple #4 Exécution d'une opération zip de tableaux
<?php
$a = [1, 2, 3, 4, 5];
$b = ['one', 'two', 'three', 'four', 'five'];
$c = ['uno', 'dos', 'tres', 'cuatro', 'cinco'];
$d = array_map(null, $a, $b, $c);
print_r($d);
?>
L'exemple ci-dessus va afficher :
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 ) )
Le tableau retourné conservera les clés du tableau passé en argument, si et seulement si, un seul tableau est passé. Si plusieurs tableaux sont passés comme argument, le tableau retourné aura des clés sous la forme d'entier.
Exemple #5
NULL
callback
avec seulement
array1
<?php
$array = [1, 2, 3];
var_dump(array_map(null, $array));
?>
L'exemple ci-dessus va afficher :
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
Exemple #6 array_map() - avec des clés sous la forme de chaîne de caractères
<?php
$arr = ['stringkey' => '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));
?>
L'exemple ci-dessus va afficher :
array(1) { ["stringkey"]=> 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" } }