1
0
mirror of https://github.com/php/doc-pl.git synced 2026-03-24 07:02:07 +01:00
Files
archived-doc-pl/reference/array/functions/array-map.xml
Maciej Sobaczewski 74a9ec438b Sync with EN
2025-05-14 03:58:20 +02:00

474 lines
10 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 2e60c5134e7a847c99f81eb3f7ecee1f5efeeace Maintainer: sobak Status: ready -->
<!-- CREDITS: cyb0org, leszek, sobak, grzesiek -->
<refentry xml:id="function.array-map" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>array_map</refname>
<refpurpose>Stosuje podany callback do elementów podanych tablic</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>array_map</methodname>
<methodparam><type class="union"><type>callable</type><type>null</type></type><parameter>callback</parameter></methodparam>
<methodparam><type>array</type><parameter>array</parameter></methodparam>
<methodparam rep="repeat"><type>array</type><parameter>arrays</parameter></methodparam>
</methodsynopsis>
<para>
<function>array_map</function> zwraca tablicę &array; zawierającą
wyniki zastosowania <parameter>callback</parameter> do odpowiedniej wartości
tablicy <parameter>array</parameter> (i tablic <parameter>arrays</parameter>, jeśli podano
więcej tablic) użytych jako argumenty dla funkcji zwrotnej callback. Liczba
parametrów, które <parameter>callback</parameter> akceptuje, powinna być
zgodna z liczbą tablic przekazanych do funkcji <function>array_map</function>.
Nadmiarowe tablice wejściowe są ignorowane. Błąd <classname>ArgumentCountError</classname>
jest zgłaszany, jeśli podano niewystarczającą liczbę argumentów.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>callback</parameter></term>
<listitem>
<para>
Funkcja zwrotna <type>callable</type> do uruchomienia na każdym elemencie w każdej tablicy.
</para>
<para>
&null; może być przekazana jako wartość do <parameter>callback</parameter>
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 <parameter>array</parameter> została podana,
<methodname>array_map</methodname> zwróci tablicę wejściową.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>array</parameter></term>
<listitem>
<para>
Tablica do przepuszczenia przez podany <parameter>callback</parameter>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>arrays</parameter></term>
<listitem>
<para>
Dodatkowa zmienna lista argumentów tablicowych, które mają być uruchomione
przez funkcję <parameter>callback</parameter>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Zwraca tablicę zawierającą wyniki zastosowania funkcji <parameter>callback</parameter>
do odpowiedniej wartości tablicy <parameter>array</parameter>
(i tablic <parameter>arrays</parameter> jeśli podano więcej tablic)
używanych jako argumenty funkcji zwrotnej callback
</para>
<para>
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.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
&array.changelog.by-ref;
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Przykład użycia <function>array_map</function></title>
<programlisting role="php">
<![CDATA[
<?php
function cube($n)
{
return ($n * $n * $n);
}
$a = [1, 2, 3, 4, 5];
$b = array_map('cube', $a);
print_r($b);
?>
]]>
</programlisting>
<para>
Zmienna b <varname>$b</varname> otrzyma:
</para>
<screen>
<![CDATA[
Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)
]]>
</screen>
</example>
</para>
<para>
<example>
<title><function>array_map</function> z użyciem funkcji lambda</title>
<programlisting role="php">
<![CDATA[
<?php
$func = function(int $value): int {
return $value * 2;
};
print_r(array_map($func, range(1, 5)));
// Lub od PHP 7.4.0:
print_r(array_map(fn($value): int => $value * 2, range(1, 5)));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
[4] => 10
)
]]>
</screen>
</example>
</para>
<para>
<example>
<title><function>array_map</function> - użycie większej ilości tablic</title>
<programlisting role="php">
<![CDATA[
<?php
function show_Spanish(int $n, string $m): string
{
return "The number {$n} is called {$m} in Spanish";
}
function map_Spanish(int $n, string $m): array
{
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);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
// printout of $c
Array
(
[0] => 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
)
)
]]>
</screen>
</example>
</para>
<para>
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.
</para>
<para>
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
</para>
<para>
<example>
<title>Wykonywanie operacji zip na tablicach</title>
<programlisting role="php">
<![CDATA[
<?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);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
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
)
)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>
&null; <parameter>callback</parameter> tylko z
<parameter>array</parameter>
</title>
<programlisting role="php">
<![CDATA[
<?php
$array = [1, 2, 3];
var_dump(array_map(null, $array));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
]]>
</screen>
</example>
</para>
<para>
<example>
<title><function>array_map</function> - z kluczami tekstowymi</title>
<programlisting role="php">
<![CDATA[
<?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));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
array(1) {
["nazwa"]=>
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ść"
}
}
]]>
</screen>
</example>
<example>
<title><function>array_map</function> - tablice asocjacyjne</title>
<para>
Chociaż <function>array_map</function> nie obsługuje bezpośrednio używania klucza tablicy
jako danych wejściowych, można to symulować za pomocą funkcji <function>array_keys</function>.
</para>
<programlisting role="php">
<![CDATA[
<?php
$arr = [
'v1' => '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);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
array(3) {
[0]=>
string(24) "v1 was the First release"
[1]=>
string(25) "v2 was the Second release"
[2]=>
string(24) "v3 was the Third release"
}
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>array_filter</function></member>
<member><function>array_reduce</function></member>
<member><function>array_walk</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->