Files
php-doc-ru/reference/array/functions/array-walk.xml
Shein Alexey ab3c2130fa Fixed path to sgml-default-dtd-file.
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@305403 c90b9560-bf6c-de11-be94-00142212c4b1
2010-11-16 08:52:05 +00:00

150 lines
6.0 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: n/a Maintainer: sveta Status: ready -->
<!-- $Revision$ -->
<!-- splitted from ./en/functions/array.xml, last change in rev 1.2 -->
<refentry xml:id="function.array-walk" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>array_walk</refname>
<refpurpose>
Применить пользовательскую функцию к каждому члену массива
</refpurpose>
</refnamediv>
<refsect1>
<title>Описание</title>
<methodsynopsis>
<type>bool</type><methodname>array_walk</methodname>
<methodparam><type>array</type><parameter>&amp;array</parameter></methodparam>
<methodparam><type>callback</type><parameter>funcname</parameter></methodparam>
<methodparam choice="opt"><type>mixed</type><parameter>userdata</parameter></methodparam>
</methodsynopsis>
<simpara>
&return.success;
</simpara>
<simpara>
Применяет пользовательскую функцию <parameter>funcname</parameter> к каждому
элементу массива <parameter>array</parameter>. Обычно у функции
<parameter>funcname</parameter> два параметра.
Значение массива <parameter>array</parameter> в качестве первого параметра, и
ключ/индекс в качестве второго. Если указан дополнительный параметр <parameter>userdata</parameter>,
он будет передан в качестве третьего параметра в
функцию обратного вызова <parameter>funcname</parameter>.
</simpara>
<simpara>
Если в функцию <parameter>funcname</parameter> должно быть передано больше параметров,
чем передано на самом деле, ошибка уровня <link linkend="errorfunc.constants">
E_WARNING</link> будет генерироваться каждый раз как <function>array_walk</function>
будет вызывать <parameter>funcname</parameter>. Эти предупреждения могут быть подавлены добавлением
оператора управления ошибками PHP
<link linkend="language.operators.errorcontrol">@</link> в вызов
<function>array_walk</function>, или использованием
<function>error_reporting</function>.
</simpara>
<note>
<para>
Если требуется, чтобы функция <parameter>funcname</parameter> изменила
значения в массиве, определите первый параметр
<parameter>funcname</parameter> как
<link linkend="language.references">ссылку</link>. Тогда
все изменения будут применены к элементам массива.
</para>
</note>
<note>
<para>
Передача в <parameter>funcname</parameter> параметров key и userdata была
добавлена в версии 4.0.0
</para>
</note>
<para>
<function>array_walk</function> не изменяет внутренний
указатель массива <parameter>array</parameter>. <function>
array_walk</function> обойдёт все элементы массива
независимо от позиции указателя. Для того чтобы сбросить указатель, используйте
функцию <function>reset</function>. В PHP 3
<function>array_walk</function> сбрасывает указатель.
</para>
<para>
Вы не сможете изменить непосредственно массив при помощи функции обратного вызова,
то есть добавить и удалить элементы, уничтожить значения элементов и т.д. Если
массив, к которому применяется <function>array_walk</function>, изменится,
то поведение этой функции станет неопределённым и непредсказуемым.
</para>
<para>
<example>
<title>Пример использования <function>array_walk</function></title>
<programlisting role="php">
<![CDATA[
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
function test_alter(&$item1, $key, $prefix)
{
$item1 = "$prefix: $item1";
}
function test_print($item2, $key)
{
echo "$key. $item2<br />\n";
}
echo "Before ...:\n";
array_walk($fruits, 'test_print');
array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";
array_walk($fruits, 'test_print');
?>
]]>
</programlisting>
<para>
Вывод вышеприведённой программы:
</para>
<screen role="php">
<![CDATA[
Before ...:
d. lemon
a. orange
b. banana
c. apple
... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. fruit: apple
]]>
</screen>
</example>
</para>
<simpara>
См. также <function>array_walk_recursive</function>,
<function>create_function</function>,
<function>list</function>,
<link linkend="control-structures.foreach">foreach</link>,
<function>each</function>,
<function>call_user_func_array</function> и
<function>array_map</function>.
</simpara>
</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
-->