001.gif

Иногда нужно работать с диапазоном элементов массива. Например, нужно обрабатывать большой кусок массива или упорядочить массив, а затем извлечь из него «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() с индексированными и ассоциированными массивами.
Сохранять оригинальные индексы при работе с индексированными массивами.
Извлекать все элементы до конца оригинального массива.

h++p://ruseller.com/lessons.php?rub=37&id=657

Категория: PHP, HTML, CSS... | Теги:

Оставьте свой комментарий