Работа с массивами : Получение и удаление
части массива
array_slice
Получение части массива.
Синтаксис :
array array_slice(array arr, int offset [,
int len])
Эта функция возвращает часть ассоциативного
массива arr, начиная с элемента со
смещением (номером) offset от начала
и длиной len (если последний параметр
не задан, до конца массива).
Параметры offset и len
задаются по точно таким же правилам, как и
аналогичные параметры в функции substr().
А именно, если offset>0, то
последовательность будет начинаться с
элемента, имеющего позицию offset от
начала массива, а если <0, то отсчет
производится от конца массива. Надо
отметить, что первый элемент имеет нулевую
позицию, а последний (-1).
Если указать length>0, то это число
возвращаемых в массиве элементов, а если
length<0, то это позиция последнего
возвращаемого элемента в массиве arr
от его конца.
$input = array("a", "b", "c", "e");
$output = array_slice($input, 2); // "c", "d", "e"
$output = array_slice($input, 2, -1); // "c", "d"
$output = array_slice($input, -2, 1); // "d"
$output = array_slice($input, 0, 3); // "a", "b", "c"
array_splice
Удаляет часть массива или заменяет ее частью
другого массива.
Синтаксис :
array array_splice(array arr, int offset [,
int len] [, int repl])
Эта функция, также как и array_slice(),
возвращает подмассив arr начиная с
индекса offset максимальной длины
len, но, вместе с тем, она делает и
другое полезное действие. А именно, она
заменяет только что указанные элементы на
то, что находится в массиве repl (или
просто удаляет, если repl не указан).
Если offset>0, то последовательность
будет начинаться с элемента, имеющего
позицию offset от начала массива, а
если <0, то отсчет производится от конца
массива. Надо отметить, что первый элемент
имеет нулевую позицию, а последний (-1).
Если указать length>0, то это число
возвращаемых в массиве элементов, а если
length<0, то это позиция последнего
возвращаемого элемента в массиве arr
от его конца.
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// Теперь $input===array("red", "green")
array_splice($input, 1, -1);
// Теперь $input===array("red", "yellow")
array_splice($input, -1, 1, array("black", "maroon"));
// Теперь $input===array("red", "green", "blue","black",
"maroon")
array_splice($input, 1, count($input), "orange");
// Теперь $input===array("red", "orange")
Последний пример показывает, что в качестве
параметра repl мы можем указать и
обычное, строковое значение, а не массив из
одного элемента.