Справочник по PHP

Работа с несколькими массивами


array_diff

Определение исключительного пересечения массивов.

Синтаксис :

array array_diff(array arr1, array arr2 [, array ...])

Данная функция возвращает массив, который содержит значения, имеющиеся только в массиве arr1 ( и не имеющиеся в любых других). При этом индексы не сохраняются.

$arr1 = array("a" => "green", "red", "blue");$arr2 = array("b" => "green", "yellow", "red");$result = array_diff($arr1, $arr2);// $result = array("blue")

array_intersect

Определение включительного пересечения массивов.

Синтаксис :

array array_intersect(array arr1, array arr2 [, array ...])

Функция array_intersect() возвращает массив, который содержит значения массива arr1, имеющиеся во всех остальных массивах. При этом индексы не сохраняются.

$arr1 = array("a" => "green", "red", "blue");$arr2 = array("b" => "green", "yellow", "red");$result = array_intersect($arr1, $arr2);// $result = array("a" => "green", "red")

array_merge

Слияние массивов.

Синтаксис :



array array_merge(array arr1, array arr2 [, array ...])

Функция array_merge()

призвана устранить все недостатки, присущие оператору + для слияния массивов. А именно, она сливает массивы, перечисленные в ее аргументах, в оди большой массив и возвращает результат. Если в массивах встречаются одинаковые ключи, в результат помещается пара ключ=>значение из того массива, который расположен правее в списке аргументов. Однако это не затрагивает числовые ключи: элементы с такими ключами помещаются в конец результирующего массива в любом случае.

$L1=array(10,20,30);$L2=array(100,200,300);$L=array_merge($L1, $L2);// теперь $L===array(10,20,30,100,200,300);

array_merge_recursive

Объединение сложных массивов.

Синтаксис :

array array_merge_recursive(array arr1, array arr2 [, array ...])


Функция array_merge_recursive()

сильно напоминает функцию array_merge() с тем дополнением, что она может работать с многомерными и древовидными массивами, а элементы с одинаковыми строковыми индексами превращаются в подмассивы. Для числовых индексов поведение функции аналогично array_merge().

$arr1 = array("color" => array("favorite" =>"red"), 5);$arr2 = array(10, "color" => array("favorite" =>"green"), "blue");$result = array_merge_recursive($arr1, $arr2);// $result = array("color" => array (//                   "favorite" => array("red", "green"),//                   "blue"), 5, 10)

Получение и удаление части массива

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

мы можем указать и обычное, строковое значение, а не массив из одного элемента.


Содержание раздела