SHPORA.net :: PDA | |
Main FAQ гуманитарные науки естественные науки математические науки технические науки Получение части массива Для получения части массива можно использовать функцию array_slice() array_slice(array $Arr, int $offset [, int $len]) Эта функция возвращает часть ассоциативного массива, начиная с пары ключ=>значения со смещением (номером) $offset от начала и длиной $len (если последний параметр не задан - до конца массива). Параметры $offset и $len задаются по точно таким же правилам, как и аналогичные параметры в функции substr(). А именно, они могут быть отрицательными (в этом случае отсчет осуществляется от конца массива), и т. д. Вот несколько примеров: $input = array ("a", "b", "c", "d", "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" 59.Вставка и удаление элементов массивов Мы уже знаем несколько операторов, которые отвечают за вставку и удаление элементов. Например, оператор [] (пустые квадратные скобки) добавляет элемент в конец массива, присваивая ему числовой ключ, а оператор Unset() вместе с извлечением по ключу удаляет нужный элемент. Язык PHP поддерживает и многие другие функции, которые иногда бывает удобно использовать. array_push(alist &$Arr, mixed $var1 [, mixed $var2, …]) Эта функция добавляет к списку $Arr элементы $var1, $var2 и т. д. Она присваивает им числовые индексы — точно так же, как это происходит для стандарных []. Если вам нужно добавить всего один элемент, наверное, проще и будет воспользоваться этим оператором: array_push($Arr,1000); // вызываем функцию… $Arr[]=100; // то же самое, но короче Обратите внимание, что функция array_push() воспринимает массив, как стек, и добавляет элементы всегда в его конец. Она возвращает новое число элементов в массиве. array_pop(list &$Arr) Функция array_pop(), является противоположностью array_push(), снимает элемент с "вершины" стека (то есть берет последний элемент списка) и возвращает его, удалив после этого его из $Arr. С помощью этой функции мы можем строить конструкции, напоминающие стек. Если список $Arr был пуст, функция возвращает пустую строку. array_unshift(list &$Arr, mixed $var1 [, mixed $var2, …]) Функция array_unshift очень похожа на array_push(), но добавляет перечисленные элементы не в конец, а в начало массива. При этом порядок следования $var1, $var2 и т. д. остается тем же, т. е. элементы как бы "вдвигаются" в список слева. Новым элементам списка, как обычно, назначаются числовые индексы, начиная с 0; при этом все ключи старых элементов массива, которые также были числовыми, изменяются (чаще всего они увеличиваются на число вставляемых значений). Функция возвращает новый размер массива. Вот пример ее применения: $A=array(10,"a"=>20,30); array_unshift($A,"!","?"); // теперь $A===array(0=>"!", 1=>"?", 2=>10, a=>20, 3=>30) mixed array_shift(list &$Arr) Функция mixed array_shift извлекает первый элемент массива $Arr и возвращает его. Она сильно напоминает array_pop(), но только получает начальный, а не конечный элемент, а также производит довольно сильную "встряску" всего массива: ведь при извлечении первого элемента приходится корректировать все числовые индексы у всех оставшихся элементов… array_unique(array $Arr) Функция array_unique() возвращает массив, составленный из всех уникальных значений массива $Arr вместе с их ключами. В результирующий массив помещаются первые встретившиеся пары ключ=>значение: $input=array("a" => "green", "red", "b" => "green", "blue", "red"); $result=array_unique($input); // теперь $result===array("a"=>"green", "red", "blue"); array_splice(array &$Arr, int $offset [, int $len] [, int $Repl]) Функция array_splice, также как и array_slice(), возвращает подмассив $Arr, начиная с индекса $offset максимальной длины $len, но, вместе с тем, она делает и другое полезное действие. А именно, она заменяет только что указанные элементы на то, что находится в массиве $Repl (или просто удаляет, если $Repl не указан). Параметры $offset и $len задаются так же, как и в функции substr() — а именно, они могут быть и отрицательными, в этом случае отсчет начинается от конца массива. Вот некоторые примеры: <?php $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 мы можем указать и обычное, строковое значение, а не массив из одного элемента. |