PHP: Добавление и удаление элементов массива
Рассмотрим способы записи значений в массив. Существующий массив может быть изменен явной установкой в нем значений. Это выполняется с помощью присваивания значений массиву.
Операция присваивания значения элементу массива выглядит так же, как операция присваивания значения переменной, за исключением квадратных скобок ([]
), которые добавляются после имени переменной массива. В квадратных скобках указывается индекс/ключ элемента. Если индекс/ключ не указан, PHP автоматически выберет наименьший незанятый числовой индекс.
<?php $my_arr = array( 0 => 'ноль', 1 => 'один'); $my_arr[2] = 'два'; $my_arr[3] = 'три'; var_dump($my_arr); // присваивание без указания индекса/ключа $my_arr[] = 'четыре'; $my_arr[] = 'пять'; echo "<br>"; var_dump($my_arr); ?>
Для изменения определенного значения, нужно просто присвоить новое значение уже существующему элементу. Чтобы удалить какой-либо элемент массива с его индексом/ключом или удалить полностью сам массив, используется функция unset()
:
<?php $my_arr = array(10, 15, 20); $my_arr[0] = 'радуга'; // изменяем значение первого элемента unset($my_arr[1]); // Удаляем полностью второй элемент (ключ/значение) из массива var_dump($my_arr); unset($my_arr); // Полностью удаляем массив ?>
Примечание: как уже упоминалось выше, если элемент добавляется в массив без указания ключа, PHP автоматически будет использовать предыдущее наибольшее значение ключа типа integer
, увеличенное на 1. Если целочисленных индексов в массиве еще нет, то ключом будет 0 (ноль).
Учтите, что наибольшее целое значение ключа не обязательно существует в массиве в данный момент, такое может быть по причине удаления элементов массива. После того как были удалены элементы, переиндексация массива не происходит. Приведем следующий пример, чтобы стало понятнее:
<?php // Создаем простой массив с числовыми индексами. $my_arr = array(1, 2, 3); print_r($my_arr); // Теперь удаляем все элементы, но сам массив оставляем нетронутым: unset($my_arr[0]); unset($my_arr[1]); unset($my_arr[2]); echo "<br>"; print_r($my_arr); // Добавляем элемент (обратите внимание, что новым ключом будет 3, вместо 0). $my_arr[] = 6; echo "<br>"; print_r($my_arr); // Делаем переиндексацию: $my_arr = array_values($my_arr); $my_arr[] = 7; echo "<br>"; print_r($my_arr); ?>
В этом примере использовались две новые функции, print_r()
и array_values()
. Функция array_values()
возвращает индексированный массив (заново индексирует возвращаемый массив числовыми индексами), а функция print_r
работает наподобие var_dump
, но выводит массивы в более удобочитаемом виде.
Теперь мы можем рассмотреть третий способ создания массивов:
<?php // следующая запись создает массив $weekdays[] = 'Понедельник'; $weekdays[] = 'Вторник'; // тоже самое, но с указанием индекса $weekdays[0] = 'Понедельник'; $weekdays[1] = 'Вторник'; ?>
В примере был показан третий способ создания массива. Если массив $weekdays
еще не был создан, то он будет создан. Однако такой вид создания массива не рекомендуется применять, так как если переменная $weekdays
уже была ранее создана и содержит значение, это может привести к неожиданным результатам работы сценария.
Если у вас возникают сомнения по поводу того, является ли переменная массивом, воспользуйтесь функцией is_array
. Например, проверку можно выполнить следующим образом:
<?php $yes = array('это', 'массив'); echo is_array($yes) ? 'Массив' : 'Не массив'; echo '<br>'; $no = 'обычная строка'; echo is_array($no) ? 'Массив' : 'Не массив'; ?>
С этой темой смотрят: