array_map
(PHP 4 >= 4.0.6, PHP 5)
array_map — Aplikuje spätné volanie na elementy daných polí
Popis
array_map() vracia pole obsahujúce všetky elementy poľa1 po aplikovaní funkcie callback na každý element. Počet parametrov, ktorý funkcia callback akceptuje, by sa mal zhodovať s počtom polí odoslaných funkcii array_map()
Example#1 array_map() príklad
<?php
function cube($n)
{
return $n*$n*$n;
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>
$b bude obsahovať:
Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )
Example#2 array_map() - používanie viacerých polí
<?php
function show_Spanish($n, $m)
{
return "Cislo $n sa po spanielsky povie $m";
}
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);
?>
Výsledkom je:
// výpis $c Array ( [0] => Cislo 1 sa po spanielsky povie uno [1] => Cislo 2 sa po spanielsky povie dos [2] => Cislo 3 sa po spanielsky povie tres [3] => Cislo 4 sa po spanielsky povie cuatro [4] => Cislo 5 sa po spanielsky povie cinco ) // výpis $d Array ( [0] => Array ( [1] => uno ) [1] => Array ( [2] => dos ) [2] => Array ( [3] => tres ) [3] => Array ( [4] => cuatro ) [4] => Array ( [5] => cinco ) )
Zvyčajne, keď sa používajú dve alebo viac polí, mali by byť rovnakej dĺžky, pretože spätné volanie funkcie sa aplikuje paralelne na korešpondujúce elementy. Ak polia nemajú rovnakú dĺžku, najkratšie sa rozšíri o prázdne elementy.
Zaujímavé využitie tejto funkcie je vybudovanie poľa polí, ktoré sa dá jednoducho vytvoriť použitím NULL ako názvu spätného volania funkcie.
Example#3 Vytváranie poľa polí
<?php
$a = array(1, 2, 3, 4, 5);
$b = array("jeden", "dva", "tri", "styri", "pat");
$c = array("uno", "dos", "tres", "cuatro", "cinco");
$d = array_map(null, $a, $b, $c);
print_r($d);
?>
Horeuvedený program vypíše:
Array ( [0] => Array ( [0] => 1 [1] => jeden [2] => uno ) [1] => Array ( [0] => 2 [1] => dva [2] => dos ) [2] => Array ( [0] => 3 [1] => tri [2] => tres ) [3] => Array ( [0] => 4 [1] => styri [2] => cuatro ) [4] => Array ( [0] => 5 [1] => pat [2] => cinco ) )
Tiež pozri array_filter(), array_reduce() a array_walk().