array_map
Stosuje podany callback do elementów podanych tablic
&reftitle.description;
arrayarray_map
callablenullcallback
arrayarray
arrayarrays
array_map zwraca tablicę &array; zawierającą
wyniki zastosowania callback do odpowiedniej wartości
tablicy array (i tablic arrays, jeśli podano
więcej tablic) użytych jako argumenty dla funkcji zwrotnej callback. Liczba
parametrów, które callback akceptuje, powinna być
zgodna z liczbą tablic przekazanych do funkcji array_map.
Nadmiarowe tablice wejściowe są ignorowane. Błąd ArgumentCountError
jest zgłaszany, jeśli podano niewystarczającą liczbę argumentów.
&reftitle.parameters;
callback
Funkcja zwrotna callable do uruchomienia na każdym elemencie w każdej tablicy.
&null; może być przekazana jako wartość do callback
aby wykonać operację zip na wielu tablicach i zwrócić tablicę,
której każdy element jest tablicą zawierającą elementy tablic wejściowych o tym samym indeksie (patrz przykład poniżej).
Jeśli tylko tablica array została podana,
array_map zwróci tablicę wejściową.
array
Tablica do przepuszczenia przez podany callback.
arrays
Dodatkowa zmienna lista argumentów tablicowych, które mają być uruchomione
przez funkcję callback.
&reftitle.returnvalues;
Zwraca tablicę zawierającą wyniki zastosowania funkcji callback
do odpowiedniej wartości tablicy array
(i tablic arrays jeśli podano więcej tablic)
używanych jako argumenty funkcji zwrotnej callback
Zwrócona tablica zachowa klucze argumentu tablicy wtedy i tylko wtedy,
jeśli przekazano dokładnie jedną tablicę. Jeśli przekazano więcej niż jedną tablicę,
zwrócona tablica będzie miała sekwencyjne klucze liczb całkowitych.
&reftitle.changelog;
&Version;
&Description;
&array.changelog.by-ref;
&reftitle.examples;
Przykład użycia array_map
]]>
Zmienna b $b otrzyma:
1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)
]]>
array_map z użyciem funkcji lambda
$value * 2, range(1, 5)));
?>
]]>
&example.outputs;
2
[1] => 4
[2] => 6
[3] => 8
[4] => 10
)
]]>
array_map - użycie większej ilości tablic
$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);
?>
]]>
&example.outputs;
Cyfra 1 to po hiszpańsku uno
[1] => Cyfra 2 to po hiszpańsku dos
[2] => Cyfra 3 to po hiszpańsku tres
[3] => Cyfra 4 to po hiszpańsku cuatro
[4] => Cyfra 5 to po hiszpańsku cinco
)
// wypis zmiennej $d
Array
(
[0] => Array
(
[1] => uno
)
[1] => Array
(
[2] => dos
)
[2] => Array
(
[3] => tres
)
[3] => Array
(
[4] => cuatro
)
[4] => Array
(
[5] => cinco
)
)
]]>
Zazwyczaj, gdy używa się dwóch lub więcej tablic, powinny one mieć
jednakową długość, ponieważ funkcja zwrotna jest stosowana równolegle
do odpowiadających elementów.
Jeśli tablice nie są równej długości, krótsze zostaną rozszerzone, używając
pustych elementów, tak aby ich długość zgadzała się z najdłuższą z tablic.
Ciekawym zastosowaniem tej funkcji może być konstruowanie tablicy tablic,
które może zostać łatwo osiągnięte dzięki użyciu &null; jako nazwy funkcji
zwrotnej
Wykonywanie operacji zip na tablicach
]]>
&example.outputs;
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
)
)
]]>
&null; callback tylko z
array
]]>
&example.outputs;
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
]]>
array_map - z kluczami tekstowymi
'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));
?>
]]>
&example.outputs;
array(1) {
[0]=>
string(5) "wartość"
}
}
array(1) {
[0]=>
array(2) {
[0]=>
string(5) "wartość"
[1]=>
string(5) "wartość"
}
}
array(1) {
["nazwa"]=>
string(5) "wartość"
}
array(1) {
[0]=>
array(2) {
[0]=>
string(5) "wartość"
[1]=>
string(5) "wartość"
}
}
]]>
array_map - tablice asocjacyjne
Chociaż array_map nie obsługuje bezpośrednio używania klucza tablicy
jako danych wejściowych, można to symulować za pomocą funkcji array_keys.
'First release',
'v2' => 'Second release',
'v3' => 'Third release',
];
// Notatka: Przed 7.4.0, zamiast tego użyj dłuższej składni dla funkcji anonimowych.
$callback = fn(string $k, string $v): string => "$k was the $v";
$result = array_map($callback, array_keys($arr), array_values($arr));
var_dump($result);
?>
]]>
&example.outputs;
string(24) "v1 was the First release"
[1]=>
string(25) "v2 was the Second release"
[2]=>
string(24) "v3 was the Third release"
}
]]>
&reftitle.seealso;
array_filter
array_reduce
array_walk