Извлечение элементов из массива с помощью array_slice()

Иногда нужно работать с диапазоном элементов массива. Например, нужно обрабатывать большой кусок массива или упорядочить массив, а затем извлечь из него "10 первых" значений от начала массива.

В данном уроке разбирается функция PHP array_slice(), с помощью которой можно извлечь диапазон элементов из массива.

Основы использования array_slice()
В функцию array_slice() передаются следующие аргументы:

Массив, из которого будет извлекаться часть элементов.
Позиция, с которой начинается извлекаемая часть массива (отсчёт элементов в массиве начинается с 0).
Количесвто элементов/, которые надо извлечь из массива.
array_slice() возвращает массив, который содержит извлечённые элементы. Оригинальный массив остаётся без изменений.

Пример использования функции array_slice():
$directors = array( "Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang" );
 
// Выводит "Array ( [0] => Stanley Kubrick [1] => Martin Scorsese )"
print_r( array_slice( $directors, 1, 2 ) );

В выше приведённом коде создаётся массив с 4-мя элементами (имена режиссёров), затем используется функция array_slice() для извлечения второго и третьего элементов.

Заметьте, что позиция элемента в массиве и его индекс не всегда одно и тоже. Например, первый элемент массива всегда имеет позицию 0, но его индекс может быть 456. Индексированные массивы PHP не обязаны иметь последовательные индексы, начинающиеся с ноля (хотя очень часто разработчики устанавливают именно такую нумерацию индекса).

Сохранение индексов
В выше приведённом примере можно заметить, что array_slice() изменила индексы элементов в возвращаемом массиве: Stanley Kubrick получил индекс 0, а Martin Scorsese получил индекс 1. Часто такое функционирование не вызывает никаких проблем, так как важен порядок следования элементов в получаемом массиве, а не их индексы.

Однако, иногда важно сохранять индексы извлекаемых элементов. Например, индексы могут быть ключами, с помощью которых указываются записи в таблице данных, или они могут быть важными для каких-то других целей. В таком случае вы можете сохранить индексы извлекаемых элементов с помощью передачи в качестве четвёртого аргумента значения true в функцию array_slice(). Например:
$directors = array( "Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang" );
 
// Выводит "Array ( [1] => Stanley Kubrick [2] => Martin Scorsese )"
print_r( array_slice( $directors, 1, 2, true ) );

Заметьте, что функция array_slice() в данном случае сохранили индексы оригинального массива для элементов: 1 для Stanley Kubrick, и 2 для Martin Scorsese.

Функция array_slice() всегда сохраняет индексы в ассоциированных массивах. Таким образом нет необходимости передавать значение true в качестве четвёртого аргумента при работе с ассоциированными массивами.

Извлечение элементов до конца массива
Если вы не будете указывать третий аргумент функции array_slice(), то в массив -результат попадут все элементы оригинального массива, начиная со стартовой позиции до конца массива. Такое функционирование может быть удобно в случае, если вы не знаете размеров оригинального массива. Например:
$directors = array( "Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang" );
 
// Выводит "Array ( [0] => Stanley Kubrick [1] => Martin Scorsese [2] => Fritz Lang )"
print_r( array_slice( $directors, 1 ) );

Использование функции array_slice() для ассоциированных массивов
вы можете использовать array_slice() для извлечения элементов из ассоциированного массива. Ниже приведён пример извлечения 2 элементов из ассоциированного массива, начиная со второго элемента:
$movie = array( "title" => "Rear Window",
                "director" => "Alfred Hitchcock",
                "year" => 1954,
                "minutes" => 112 );
 
// Выводит "Array ( [director] => Alfred Hitchcock [year] => 1954 )"
print_r( array_slice( $movie, 1, 2 ) );

Заметьте, что функция array_slice() сохранила индексы "director" и "year" в массиве-результате.

Резюме
В данной статье мы разобрали использование функции array_slice(). Полезной PHP функции, которая возвращает диапазон элементов массива. Вы узнали:

Как использовать функцию array_slice() с индексированными и ассоциированными массивами.
Сохранять оригинальные индексы при работе с индексированными массивами.
Извлекать все элементы до конца оригинального массива.
Данный урок подготовлен для вас командой сайта ruseller.com
Теги:
массив, array_slice()
Добавлено: 09 Мая 2018 12:45:53 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...