1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/array/functions/list.xml
Sergey Panteleev daef8df962 Обнуление тега Reviewed (#364)
[skip-lint]
[skip-spellcheck]
2021-11-16 13:03:53 +03:00

268 lines
7.3 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: 43ac336818cb3a18011d9b6ba91514f3332eb46d Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<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>var</parameter></methodparam>
<methodparam rep="repeat" choice="opt"><type>mixed</type><parameter>vars</parameter></methodparam>
</methodsynopsis>
<para>
Подобно <function>array</function>, это не функция,
а языковая конструкция. <function>list</function> используется
для того, чтобы присвоить списку переменных значения за одну операцию.
Строки нельзя распаковать, а выражения <function>list</function>
не могут быть полностью пустыми.
</para>
<note>
<para>
До PHP 7.1.0, <function>list</function> работала только с индексированными массивами и принимала числовые индексы начиная с 0.
</para>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>var</parameter></term>
<listitem>
<para>
Переменная.
</para>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term><parameter>vars</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.3.0</entry>
<entry>
Добавлена поддержка присвоения по ссылкам при деструктурировании массива.
</entry>
</row>
<row>
<entry>7.1.0</entry>
<entry>
Теперь возможно задавать ключи в <function>list</function>. Это позволяет
разыменовывать ассоциативные массивы и массивы с индексами не по порядку.
</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[
<?php
$result = $pdo->query("SELECT id, name FROM employees");
while (list($id, $name) = $result->fetch(PDO::FETCH_NUM)) {
echo "id: $id, name: $name\n";
}
?>
]]>
</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>
<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>
<para>
<example>
<title><function>list</function> с ключами</title>
<simpara>
Начиная с PHP 7.1.0, для <function>list</function> можно задавать конкретные
ключи, которые могут быть произвольными выражениями. Допустимо
смешивать строковые и числовые ключи. Однако элементы с ключами и без
ключей не могут быть использоваться одновременно.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
$data = [
["id" => 1, "name" => 'Tom'],
["id" => 2, "name" => 'Fred'],
];
foreach ($data as ["id" => $id, "name" => $name]) {
echo "id: $id, name: $name\n";
}
echo PHP_EOL;
list(1 => $second, 3 => $fourth) = [1, 2, 3, 4];
echo "$second, $fourth\n";
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
id: 1, name: Tom
id: 2, name: Fred
2, 4
]]>
</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
-->