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) ? 'Массив' : 'Не массив';

?>
    
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011-2016 © puzzleweb.ru

Реклама на сайте | Обратная связь