(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
array_map — Applica la funzione callback a tutti gli elementi degli array dati
array_map() restituisce un array contenente
i risultati dell'applicazione della callback
all'indice corrispondente di array1
(e ...
se vengono forniti più array)
usati come argomenti per la callback.
Il numero di parametri che la funzione callback
accetta dovrebbe corrispondere al numero di array
passati ad array_map().
callback
Una callable da eseguire per ogni elemento in ogni array.
null
può essere passato come valore alla callback
per eseguire un'operazione zip su più array.
Se viene fornito solo array1
,
array_map() restituirà l'array di input.
array1
Un array su cui eseguire la funzione callback
.
...
Lista di variabili supplementari di argomenti di array da eseguire nella
funzione callback
.
Restituisce un array contenente i risultati dell'applicazione della funzione
callback
all'indice corrispondente di array1
(e ...
se vengono forniti più array)
usati come argomenti per la callback.
L'array restituito conserverà le chiavi del parametro array se e solo se viene passato esattamente un array. Se viene passato più di un array, l'array restituito avrà chiavi intere sequenziali.
Example #1 Esempio di array_map()
<?php
function cube($n)
{
return ($n * $n * $n);
}
$a = [1, 2, 3, 4, 5];
$b = array_map('cube', $a);
print_r($b);
?>
Questo fa sì che $b abbia:
Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )
Example #2 array_map() usando una funzione lambda (a partire da 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 )
Example #3 array_map() - usando più array
<?php
function show_Spanish($n, $m)
{
return "Il numero {$n} è chiamato {$m} in spagnolo";
}
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);
?>
Il precedente esempio visualizzerà:
// stampa di $c Array ( [0] => Il numero 1 è chiamato uno in spagnolo [1] => Il numero 2 è chiamato dos in spagnolo [2] => Il numero 3 è chiamato tres in spagnolo [3] => Il numero 4 è chiamato cuatro in spagnolo [4] => Il numero 5 è chiamato cinco in spagnolo ) // stampa di $d Array ( [0] => Array ( [1] => uno ) [1] => Array ( [2] => dos ) [2] => Array ( [3] => tres ) [3] => Array ( [4] => cuatro ) [4] => Array ( [5] => cinco ) )
Di solito quando si usano due o più array, questi dovrebbero essere di uguale lunghezza in quanto la funzione di callback viene applicata in parallelo agli elementi corrispondenti. Se gli array sono di lunghezza diversa, quelli più corti verranno estesi con elementi vuoti per uguagliare la lunghezza del più lungo.
Un uso interessante di questa funzione è quello di costruire un array di array,
cosa che può essere facilmente ottenuta usando null
come nome della funzione callback
Example #4 Esecuzione di un'operazione zip di array
<?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);
?>
Il precedente esempio visualizzerà:
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 ) )
Example #5
callback
null
con solo
array1
<?php
$array = [1, 2, 3];
var_dump(array_map(null, $array));
?>
Il precedente esempio visualizzerà:
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
Example #6 array_map() - con chiavi stringa
<?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));
?>
Il precedente esempio visualizzerà:
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" } }