Update compact.xml Infostyle

This commit is contained in:
Mikhail Alferov
2025-04-22 08:30:10 +03:00
committed by GitHub
parent 500652ce25
commit bd1df4977e

View File

@ -4,7 +4,7 @@
<refentry xml:id="function.compact" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>compact</refname>
<refpurpose>Создаёт массив, содержащий названия переменных и их значения</refpurpose>
<refpurpose>Создаёт массив с названиями и значениями переменных</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
@ -14,18 +14,19 @@
<methodparam rep="repeat"><type class="union"><type>array</type><type>string</type></type><parameter>var_names</parameter></methodparam>
</methodsynopsis>
<para>
Создаёт массив, содержащий переменные и их значения.
Функия создаёт массив, который содержит названия и значения переменных.
</para>
<para>
Для каждого переданного аргумента функция <function>compact</function>
ищет в текущей <link linkend="features.gc.refcounting-basics">таблице символов</link> переменную с таким же именем и добавляет
её в выводимый массив так, что имя переменной становится ключом,
а значение переменной становится значением этого ключа.
Короче, она выполняет операцию, противоположную функции <function>extract</function>.
Функция <function>compact</function> выполняет операцию, противоположную функции <function>extract</function>:
рассматривает каждую строку в аргументах как название переменной,
ищет в текущей <link linkend="features.gc.refcounting-basics">таблице символов</link> переменную
с таким названием и добавляет переменную в выходной массив так, что название переменной становится ключом,
а содержимое переменной — значением этого ключа.
</para>
<note>
<para>
До PHP 7.3 строки, для которых не были найдены переменные, будут пропущены без генерации ошибки.
До PHP 7.3 функция без предупреждения пропускала строку, если в текущей области видимости
не установили переменную с таким названием.
</para>
</note>
</refsect1>
@ -39,9 +40,9 @@
<listitem>
<para>
Функция <function>compact</function> принимает неограниченное количество аргументов.
Любой из аргументов может быть либо строкой, содержащей название переменной,
либо массивом названий переменных. Массив может содержать вложенные массивы
названий переменных; функция <function>compact</function> обрабатывает их
Каждый аргумент разрешается передавать как строку, которая содержит название переменной,
или как массив названий переменных. Функция умеет обрабатывать массивы с вложенными массивами
названий переменных; функция <function>compact</function> обрабатывает такие массивы
рекурсивно.
</para>
</listitem>
@ -52,7 +53,7 @@
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает массив с добавленными переменными.
Функция возвращает массив с переменными.
</para>
</refsect1>
@ -60,7 +61,7 @@
&reftitle.errors;
<para>
Функция <function>compact</function> выдаёт ошибку уровня <constant>E_WARNING</constant>,
если полученная строка ссылается на неопределённую переменную.
если строка ссылается на переменную, которую не установили.
</para>
</refsect1>
@ -78,14 +79,15 @@
<row>
<entry>8.0.0</entry>
<entry>
Если заданная строка ссылается на неопределённую переменную, теперь будет сгенерированна ошибка уровня <constant>E_WARNING</constant>.
Функция теперь генерирует ошибку уровня <constant>E_WARNING</constant>,
если строка ссылается на переменную, которую не установили.
</entry>
</row>
<row>
<entry>7.3.0</entry>
<entry>
Функция <function>compact</function> теперь выдаёт ошибку уровня <constant>E_NOTICE</constant>, если
заданная строка связана с неопределённой переменной. Ранее такие строки пропускались без уведомления.
Функция <function>compact</function> теперь выдаёт ошибку уровня <constant>E_NOTICE</constant>,
если строка ссылается на переменную, которую не установили. Раньше такие строки функция без предупреждения пропускала.
</entry>
</row>
</tbody>
@ -97,7 +99,7 @@
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>compact</function></title>
<title>Пример добавления названий и значений переменных в массив функцией <function>compact</function></title>
<programlisting role="php">
<![CDATA[
<?php
@ -133,11 +135,10 @@ Array
<note>
<title>Замечания по работе функции compact</title>
<para>
Так как <link linkend="language.variables.variable">переменные
переменных</link> не могут быть использованы с
<link linkend="language.variables.superglobals">суперглобальными
массивами</link> внутри функций, суперглобальные массивы не могут
быть переданы в <function>compact</function>.
Поскольку <link linkend="language.variables.variable">переменные переменных</link>
нельзя использовать <link linkend="language.variables.superglobals">с суперглобальными массивами</link>
внутри функций, суперглобальные массивы нельзя
передавать в функцию <function>compact</function>.
</para>
</note>
</refsect1>