К счастью, в РНР при создании массива не нужно указывать максимальное количество элементов. Это увеличивает свободу действий при операциях с массивами, поскольку вам не приходится беспокоиться о случайном выходе за границы массива, если количество элементов превысит ожидаемый порог. В РНР существует несколько функций для увеличения размеров массива. Некоторые из них были созданы для удобства программистов, привыкших работать с различными типами очередей и стеков(FIFO, FILO и т. д.), что отражается в названиях функций(push, pop, shift и unshift). Но даже если вы не знаете, что такое «очередь» или «стек», не огорчайтесь — в этих функциях нет ничего сложного.
Очередью(queue) называется структура данных, из которой элементы извлекаются в порядке поступления. Стеком(stack) называется структура данных, из которой элементы извлекаются в порядке, обратном порядку их поступления.
array_push()
Функция array_push() присоединяет(то есть дописывает в конец массива) один или несколько новых элементов. Синтаксис функции array_push():
int array_push(array массив, mixed элемент [, ...])
Длина массива возрастает прямо пропорционально количеству его элементов. Это продемонстрировано в следующем примере:
У функции array_push(), как и у многих стандартных функций РНР, существует «двойник» — функция аrrау_рор(), предназначенная для извлечения элементов из массива. Главное различие между этими функциями заключается в том, что array_push() может добавлять несколько элементов одновременно, а аrrау_рор() удаляет элементы только по одному.
аrrау_рор()
Результат работы функции аrrау_рор() прямо противоположен array_push() — эта функция извлекает(то есть удаляет) последний элемент из массива. Извлеченный элемент возвращается функцией. Синтаксис функции аrrау_рор():
аrrау_рор(аrrау массив)
При каждом выполнении аrrау_рор() размер массива уменьшается на 1. Рассмотрим пример:
Функции array_push(), и array_pop() удобны тем, что с их помощью можно выполнять операции с элементами и управлять размером массива, не беспокоясь о неинициализированных или пустых элементах. Такое решение работает намного эффективнее, чем любые попытки управления этими факторами со стороны программиста.
array_shift()
Функция array_shift() аналогична аrrау_рор() с одним отличием: элемент удаляется из начала(левого края) массива. Все остальные элементы массива сдвигаются на одну позицию к началу массива. У функции array_shift() такой же синтаксис, как и у аrrау_рор():
array_shift(array массив)
При работе с функцией array_shift() необходимо помнить, что элементы удаляются из начала массива, как показывает следующий пример:
Функция array_unshift() дополняет array_shift() — новый элемент вставляется в начало массива, а остальные элементы сдвигаются на одну позицию вправо. Синтаксис команды array_unshift():
int array_unshift(array массив, mixed переменная1 [....переменная2])
При одном вызове функции можно добавить как один, так и несколько элементов, при этом размер массива возрастает пропорционально количеству добавленных элементов. Пример добавления нескольких элементов:
Функция array_pad() позволяет быстро увеличить массив до желаемого размера посредством его дополнения стандартными элементами. Синтаксис функции array_pad():
array array_pad(array массив, int размер, mixed значение);
Параметр размер определяет новую длину массива. Параметр значение задает стандартное значение, присваиваемое элементам во всех новых позициях массива. При использовании array_pad() необходимо учитывать некоторые обстоятельства:
Если размер положителен, массив дополняется справа, а если отрицателен — слева.
Если абсолютное значение параметра размер меньше либо равно длине массива, никаких действий не выполняется.
Абсолютным значением(модулем) целого числа называется его значение без знака. Например, абсолютное значение чисел 5 и -5 равно 5.