Files
php-doc-ru/reference/array/functions/each.xml

207 lines
6.4 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: a6655e3f9508eee6860b02f55e33560a790f42d1 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.each" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>each</refname>
<refpurpose>Возвращает текущую пару ключа и значения массива и сдвигает указатель на одну позицию вперёд</refpurpose>
</refnamediv>
<refsynopsisdiv>
&warn.deprecated.function-7-2-0.removed-8-0-0;
</refsynopsisdiv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>each</methodname>
<methodparam><type class="union"><type>array</type><type>object</type></type><parameter role="reference">array</parameter></methodparam>
</methodsynopsis>
<para>
Функция возвращает текущую пару ключа и значения массива и продвигает внутренний указатель массива на одну позицию.
</para>
<para>
После выполнения функции <function>each</function> указатель массива
останется на следующем элементе или за последним элементом,
если указатель достигнет конца массива. Для повторного обхода
каждого элемента массива потребуется вызвать функцию <function>reset</function>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>array</parameter></term>
<listitem>
<para>
Входной массив.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает текущую пару ключа и значения массива
<parameter>array</parameter>. Пара возвращается
в массиве из четырёх элементов с ключами <literal>0</literal>,
<literal>1</literal>, <literal>key</literal> и <literal>value</literal>.
Элементы с ключами <literal>0</literal> и <literal>key</literal> содержат
имя ключа элемента массива, а ключи <literal>1</literal> и <literal>value</literal>
содержат данные.
</para>
<para>
Функция <function>each</function> вернёт значение &false;,
если внутренний указатель массива указывает за пределы массива.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Примеры получения текущей пары ключа и значения массива функцией <function>each</function></title>
<programlisting role="php">
<![CDATA[
<?php
$foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each($foo);
print_r($bar);
?>
]]>
</programlisting>
<para>
Переменная <varname>$bar</varname> теперь содержит следующие пары ключей и значений:
</para>
<screen>
<![CDATA[
Array
(
[1] => bob
[value] => bob
[0] => 0
[key] => 0
)
]]>
</screen>
</example>
</para>
<para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$foo = array("Robert" => "Bob", "Seppo" => "Sepi");
$bar = each($foo);
print_r($bar);
?>
]]>
</programlisting>
<para>
Переменная <varname>$bar</varname> теперь содержит следующие пары ключей и значений:
</para>
<screen>
<![CDATA[
Array
(
[1] => Bob
[value] => Bob
[0] => Robert
[key] => Robert
)
]]>
</screen>
</informalexample>
</para>
<para>
Функцию <function>each</function> часто вызывают совместно
с функцией <function>list</function> для обхода массива, как
в этом примере:
<example>
<title>Обход массива функцией <function>each</function></title>
<programlisting role="php">
<![CDATA[
<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
reset($fruit);
while (list($key, $val) = each($fruit)) {
echo "$key => $val\n";
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
a => apple
b => banana
c => cranberry
]]>
</screen>
</example>
</para>
<caution>
<para>
Поскольку присваивание массива другой переменной
сбрасывает указатель исходного массива, пример выше
вызвал бы бесконечный цикл, если бы внутри цикла
переменную <varname>$fruit</varname>
присвоили другой переменной.
</para>
</caution>
<warning>
<para>
Функция <function>each</function> также принимает объекты,
но иногда возвращает неожиданные результаты. Поэтому перебирать
свойства объекта функцией <function>each</function> не рекомендуют.
</para>
</warning>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>key</function></member>
<member><function>list</function></member>
<member><function>current</function></member>
<member><function>reset</function></member>
<member><function>next</function></member>
<member><function>prev</function></member>
<member>&foreach;</member>
<member><link linkend="language.oop5.iterations">Итерация объектов</link></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
-->