array-splice.xml Уточнил перевод, исправил инфостиль

This commit is contained in:
Mikhail Alferov
2024-09-10 03:31:49 +03:00
committed by GitHub
parent ef6576fcc4
commit 7dfb62fe78

View File

@ -4,7 +4,7 @@
<refentry xml:id="function.array-splice" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>array_splice</refname>
<refpurpose>Удаляет часть массива и заменяет её чем-нибудь ещё</refpurpose>
<refpurpose>Удаляет часть массива и заменяет её новыми элементами</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
@ -16,23 +16,24 @@
<methodparam choice="opt"><type>mixed</type><parameter>replacement</parameter><initializer>[]</initializer></methodparam>
</methodsynopsis>
<para>
Удаляет <parameter>length</parameter> элементов, расположенных на расстоянии
<parameter>offset</parameter> из массива <parameter>array</parameter>, и заменяет их
элементами массива <parameter>replacement</parameter>, если он передан в качестве
параметра.
Функция удаляет из массива <parameter>array</parameter> элементы,
которые обозначили параметрами <parameter>offset</parameter>
и <parameter>length</parameter>, и заменяет удалённые элементы
элементами массива <parameter>replacement</parameter>, если аргумент передали.
</para>
<note>
<para>
Обратите внимание, что числовые ключи в массиве <parameter>array</parameter>
Обратите внимание, числовые ключи в массиве <parameter>array</parameter>
не сохраняются.
</para>
</note>
<note>
<simpara>
Если параметр <parameter>replacement</parameter> не является массивом, он будет
<link linkend="language.types.array.casting">преобразован</link> к нему (то есть <code>
(array) $parameter</code>). Это может привести к неожиданным результатам при
использовании объекта или &null; в качестве <parameter>replacement</parameter>.
Функция <link linkend="language.types.array.casting">приведёт</link> тип
аргумента <parameter>replacement</parameter> к массиву аналогично выражению
<code>(array) $parameter</code>, если передали не массив. Функция ведёт себя
неожиданно при передаче в параметр <parameter>replacement</parameter> объекта
или константы &null;.
</simpara>
</note>
</refsect1>
@ -52,12 +53,12 @@
<term><parameter>offset</parameter></term>
<listitem>
<para>
Если параметр <parameter>offset</parameter> положительный, будут удалены элементы,
находящиеся на расстоянии offset от начала <parameter>array</parameter>.
Функция удалит часть массива с позиции смещения, которую отсчитала от начала массива <parameter>array</parameter>,
если параметр <parameter>offset</parameter> положителен.
</para>
<para>
Если <parameter>offset</parameter> отрицательный, будут удалены
элементы, находящиеся на расстоянии offset от конца <parameter>array</parameter>.
Функция удалит часть массива с позиции смещения, которую отсчитала от конца массива <parameter>array</parameter>,
если параметр <parameter>offset</parameter> положителен.
</para>
</listitem>
</varlistentry>
@ -65,26 +66,25 @@
<term><parameter>length</parameter></term>
<listitem>
<para>
Если параметр <parameter>length</parameter> опущен, будут удалены все элементы
начиная с позиции <parameter>offset</parameter> и до конца массива.
Функция удалит каждый элемент от смещения <parameter>offset</parameter> до конца массива,
если параметр <parameter>length</parameter> опустили.
</para>
<para>
Если <parameter>length</parameter> указан и он положителен, то будет удалено именно
столько элементов.
Функция удалит столько элементов, сколько указали в параметре <parameter>length</parameter>,
если указали положительное значение.
</para>
<para>
Если параметр <parameter>length</parameter> отрицателен, то
конец удаляемой части элементов будет отстоять на это количество от конца массива.
Концом части элементов, которую удалит функция, будет такое количество элементов от конца массива,
которое указали как отрицательное значение параметра <parameter>length</parameter>.
</para>
<para>
Если <parameter>length</parameter> задан как 0, ничего удалено не будет.
Функция не удалит элементы, если для параметра <parameter>length</parameter> установили значение 0.
</para>
<tip>
<para>
Совет: для того, чтобы удалить все элементы массива, начиная с позиции
<parameter>offset</parameter> до конца массива, в то время как указан параметр
<parameter>replacement</parameter>, используйте <code>count($input)</code> в
качестве параметра <parameter>length</parameter>.
Совет: при вызове функции с аргументом <parameter>replacement</parameter>
в аргументе <parameter>length</parameter> передают выражение <code>count($input)</code>,
чтобы удалить из массива элементы от позиции смещения <parameter>offset</parameter> до конца массива.
</para>
</tip>
</listitem>
@ -93,14 +93,14 @@
<term><parameter>replacement</parameter></term>
<listitem>
<para>
Если передан массив <parameter>replacement</parameter> в качестве аргумента, тогда
удалённые элементы будут заменены элементами этого массива.
Функция заменит удаляемые элементы входного массива элементами массива <parameter>replacement</parameter>,
если массив с элементами замены передали.
</para>
<para>
Если параметры <parameter>offset</parameter> и <parameter>length</parameter>
таковы, что из исходного массива не будет ничего удалено, тогда элементы массива
<parameter>replacement</parameter> будут вставлены на позицию
<parameter>offset</parameter>.
Функция вставит элементы массива <parameter>replacement</parameter> в место,
которое начинается со смещения <parameter>offset</parameter>,
если передали смещение <parameter>offset</parameter> и длину <parameter>length</parameter>,
с которыми функция ничего не удаляет.
<note>
<para>
Обратите внимание, что ключи массива
@ -109,10 +109,10 @@
</note>
</para>
<para>
Совет: если <parameter>replacement</parameter> является просто
одним элементом, нет необходимости заключать его в <literal>array()</literal>
или квадратные скобки,
если только этот элемент сам не является массивом, объектом или &null;.
Совет: значение аргумента <parameter>replacement</parameter> передают
без конструкции <literal>array()</literal> или квадратных скобок короткого синтаксиса массивов,
если во входном массиве требуется заменить только одно значение
и значение замены — не массив, объект или константа &null;.
</para>
</listitem>
</varlistentry>
@ -122,7 +122,7 @@
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает массив, содержащий удалённые элементы.
Функция возвращает массив, который состоит из элементов, которые извлекла функция.
</para>
</refsect1>
@ -140,7 +140,7 @@
<row>
<entry>8.0.0</entry>
<entry>
<parameter>length</parameter> теперь допускает значение null.
Параметр <parameter>length</parameter> теперь принимает значение null.
</entry>
</row>
</tbody>
@ -152,10 +152,11 @@
&reftitle.examples;
<para>
<example>
<title>Примеры использования <function>array_splice</function></title>
<title>Примеры использования функции <function>array_splice</function></title>
<programlisting role="php">
<![CDATA[
<?php
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
var_dump($input);
@ -171,6 +172,7 @@ var_dump($input);
$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
var_dump($input);
?>
]]>
</programlisting>
@ -213,37 +215,40 @@ array(5) {
</para>
<para>
<example>
<title>Примеры использования <function>array_splice</function></title>
<title>
Примеры инструкций, которые дают эквивалентный функции
<function>array_splice</function> результат
</title>
<para>
Следующие выражения эквивалентны:
Следующие инструкции эквивалентны:
</para>
<programlisting role="php">
<![CDATA[
<?php
// добавить два элемента в $input
// Добавить два элемента в массив $input
array_push($input, $x, $y);
array_splice($input, count($input), 0, array($x, $y));
// удалить последний элемент из $input
// Удалить последний элемент из массива $input
array_pop($input);
array_splice($input, -1);
// удалить первый элемент из $input
// Удалить первый элемент из массива $input
array_shift($input);
array_splice($input, 0, 1);
// добавить элемент в начало $input
// Добавить элемент в начало массива $input
array_unshift($input, $x, $y);
array_splice($input, 0, 0, array($x, $y));
// заменить в $input элемент с индексом $x на значение $y
$input[$x] = $y; // для массивов, где ключ равен смещению
// Заменить в массиве $input элемент с индексом $x на значение $y
$input[$x] = $y; // Для массивов, в которых ключ равен смещению
array_splice($input, $x, 1, $y);
?>
]]>
</programlisting>