1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-28 17:52:12 +01:00
Files
archived-doc-ru/reference/array/functions/list.xml
Andrey Gromov ede830f364 5 files updated.
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@340258 c90b9560-bf6c-de11-be94-00142212c4b1
2016-09-29 14:17:52 +00:00

317 lines
8.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: ce007084b5edb7ff9b481ae5921bd9fe549b2d67 Maintainer: shein Status: ready -->
<!-- Reviewed: yes -->
<!-- $Revision$ -->
<refentry xml:id="function.list" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>list</refname>
<refpurpose>Присваивает переменным из списка значения подобно массиву</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>list</methodname>
<methodparam><type>mixed</type><parameter>var1</parameter></methodparam>
<methodparam rep="repeat" choice="opt"><type>mixed</type><parameter>...</parameter></methodparam>
</methodsynopsis>
<para>
Подобно <function>array</function>, это не функция,
а языковая конструкция. <function>list</function> используется
для того, чтобы присвоить списку переменных значения за одну операцию.
</para>
<note>
<para>
<function>list</function> only works on numerical arrays and assumes
the numerical indices start at 0.
</para>
</note>
<warning>
<para>
В PHP 5, <function>list</function> присваивает значения начиная с самого правого.
В PHP 7, <function>list</function> - с самого левого.
</para>
<para>
Если вы используете обычные переменные, можете не думать об этом, но, если вы
используете массивы с индексами, вы ожидаете, что порядок элементов в массиве
будет ровно таким, как вы его определили в <function>list</function>, слева направо,
но в PHP 5 вы получите обратный порядок.
</para>
<para>
Вообще говоря, желательно не полагаться на конкретный порядок операций, так как
будущем это поведение может быть изменено.
</para>
</warning>
<warning>
<para>
Изменение массива через <function>list</function> (т.е. так
<literal>list($a, $b) = $b</literal>) приведет к неопределенному поведению.
</para>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>var1</parameter></term>
<listitem>
<para>
Переменная.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает присвоенный массив.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>7.0.0</entry>
<entry>
<link linkend="migration70.incompatible.variable-handling.list.order">
Изменен порядок операций присвоения.
</link>
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
<link linkend="migration70.incompatible.variable-handling.list.empty">
Выражение <function>list</function> более не может быть полностью пустым.
</link>
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
<link linkend="migration70.incompatible.variable-handling.list.string">
Более нельзя разбирать строки с помощью этой функции.
</link>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Примеры использования <function>list</function></title>
<programlisting role="php">
<![CDATA[
<?php
$info = array('кофе', 'коричневый', 'кофеин');
// Составить список всех переменных
list($drink, $color, $power) = $info;
echo "$drink - $color, а $power делает его особенным.\n";
// Составить список только некоторых из них
list($drink, , $power) = $info;
echo "В $drink есть $power.\n";
// Или только третья
list( , , $power) = $info;
echo "Мне нужен $power!\n";
// list() не работает со строками
list($bar) = "abcde";
var_dump($bar); // NULL
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Пример использования <function>list</function></title>
<programlisting role="php">
<![CDATA[
<table>
<tr>
<th>Имя работника</th>
<th>Зарплата</th>
</tr>
<?php
$result = $pdo->query("SELECT id, name, salary FROM employees");
while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) {
echo " <tr>\n" .
" <td><a href=\"info.php?id=$id\">$name</a></td>\n" .
" <td>$salary</td>\n" .
" </tr>\n";
}
?>
</table>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Использование <function>list</function> с индексами массивов</title>
<programlisting role="php">
<![CDATA[
<?php
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c);
?>
]]>
</programlisting>
<screen>
<![CDATA[
int(1)
int(2)
int(3)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Использование <function>list</function> с индексами массива</title>
<programlisting role="php">
<![CDATA[
<?php
$info = array('кофе', 'коричневый', 'кофеин');
list($a[0], $a[1], $a[2]) = $info;
var_dump($a);
?>
]]>
</programlisting>
<para>
Выведет (сравните порядок исходных элементов с порядком, в
в котором они были перезаписаны <function>list</function>):
</para>
&example.outputs.7;
<screen>
<![CDATA[
array(3) {
[0]=>
string(6) "coffee"
[1]=>
string(5) "brown"
[2]=>
string(8) "caffeine"
}
]]>
</screen>
&example.outputs.5;
<screen>
<![CDATA[
array(3) {
[2]=>
string(8) "caffeine"
[1]=>
string(5) "brown"
[0]=>
string(6) "coffee"
}
]]>
</screen>
</example>
</para>
<para>
<example>
<title><function>list</function> и порядок указания индексовs</title>
<simpara>
Порядок, в котором индексы массива будут употреблены функцией
<function>list</function>, на этапе задания не имеет значения.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
$foo = array(2 => 'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);
]]>
</programlisting>
<para>
Производит такой вывод (обратите внимание, на порядок, в котором элементы
были перечислены в синтаксе <function>list</function> и на порядок вывода):
</para>
<screen>
<![CDATA[
array(4) {
[2]=>
string(1) "a"
["foo"]=>
string(1) "b"
[0]=>
string(1) "c"
[1]=>
string(1) "d"
}
string(1) "c"
string(1) "d"
string(1) "a"
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>each</function></member>
<member><function>array</function></member>
<member><function>extract</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
-->