- Работа с массивами PHP – создание, наполнение, удаление
- Создание массивов
- Создать массив и заполнить его значениями
- Результат:
- Результат:
- Узнать количество элементов в массиве
- Добавление элементов в массив
- Добавить значение в начало массива
- Результат:
- Добавить значение в конец массива
- Результат:
- Работа с ключами массива
- Поучить первый ключ массива
- Поучить последний ключ массива
- Переопределить ключи массива
- Результат:
- Результат:
- Получение элементов из массива
- Получить первый элемент массива
- Получить последний элемент массива
- Получить часть (срез) массива
- Результат:
- Извлечь первый элемент массива
- Результат:
- Извлечь последний элемент массива
- Результат:
- Извлечь часть массива
- Результат:
- Выбрать все значения из массива
- Результат:
- Выбрать все ключи массива
- Результат:
- Выбирать случайные значения из массива
- Поиск и проверка элементов в массиве
- Проверить, есть ли значение в массиве
- Проверить, есть ли ключ в массиве
- Удаление элементов из массива
- Результат:
- Удаление пустых значений
- Результат:
- Удалить повторяющиеся значения массива
- Результат:
- Объединение массивов
- Результат:
- Разделить массив на части
- Результат:
- Результат:
- Как добавить элементы в массив в PHP?
- Как добавить элементы в конец PHP массива?
Работа с массивами PHP – создание, наполнение, удаление
Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.
Создание массивов
Создать массив и заполнить его значениями
$array = array( 'яблоко', 'апельсин', 'виноград' ); // или $array = array(); $array[] = 'яблоко'; $array[] = 'апельсин'; $array[] = 'виноград';
Можно применить функцию array_fill($start, $size, $value) , которая создаст массив с количеством $size элементов со значением $value , начиная с индекса $start .
Данный пример создает массив с тремя элементам «текст», ключи которых будут начинаться с нуля.
$array = array_fill(0, 3, 'текст'); print_r($array);
Результат:
Array ( [0] => текст [1] => текст [2] => текст )
Еще вариант – функция explode($delimiter, $string) , которая из строки $string создаст массив используя разделитель $delimiter , в данном примере запятая.
$array = explode(',', 'текст 1,текст 2,текст 3'); print_r($array);
Результат:
Array ( [0] => текст 1 [1] => текст 2 [2] => текст 3 )
Узнать количество элементов в массиве
echo count($array); // или echo sizeof($array);
Если массив ассоциативный (многомерный), то count() вернёт количество элементов только первого уровня. Чтобы получит количество всех элементов нужно использовать константу COUNT_RECURSIVE .
$array = array( array( 'яблоко', 'апельсин', 'виноград' ), array( 'яблоко', 'апельсин', 'виноград' ) ); echo count($array); // вернет 2 echo count($array, COUNT_RECURSIVE); // вернет 8
Добавление элементов в массив
Добавить значение в начало массива
array_unshift($array, $value) – добавляет одно или несколько элементов в начало массива.
$array = array( 'яблоко', 'апельсин', 'виноград' ); array_unshift($array, 'банан'); print_r($array);
Результат:
Array ( [0] => банан [1] => яблоко [2] => апельсин [3] => виноград )
Добавить значение в конец массива
array_push($array, $value) – добавляет значение в конец массива.
$array = array( 'яблоко', 'апельсин', 'виноград' ); array_push($array, 'банан'); // или $array[] = 'банан'; print_r($array);
Результат:
Array ( [0] => яблоко [1] => апельсин [2] => виноград [3] => банан [4] => банан )
Работа с ключами массива
Поучить первый ключ массива
Функция array_key_first($array) — получает первый ключ массива. Появилась в версии PHP 7.3, для более ранних версий:
if (!function_exists('array_key_first')) < function array_key_first(array $arr) < foreach($arr as $key =>$unused) < return $key; >return null; > >
$array = array( 1 => 'яблоко', 3 => 'апельсин', 5 => 'виноград' ); echo array_key_first($array); // 1
Поучить последний ключ массива
Функция array_key_last($array) — получает последний ключ массива. Появилась в версии PHP 7.3, для более ранних версий:
if (!function_exists('array_key_last')) < function array_key_last($array) < if (!is_array($array) || empty($array)) < return NULL; >return array_keys($array)[count($array) - 1]; > >
$array = array( 1 => 'яблоко', 3 => 'апельсин', 5 => 'виноград' ); echo array_key_last($array); // 5
Переопределить ключи массива
К примеру, после удаления элемента массива сбивается нумерация ключей и нужно назначить новую нумерацию:
$array = array( 1 => 'яблоко', 3 => 'апельсин', 5 => 'виноград' ); $new = array_values($array); print_r($new);
Результат:
Array ( [0] => яблоко [1] => апельсин [2] => апельсин )
Начало нумерации ключей с единицы:
$array = array( 1 => 'яблоко', 3 => 'апельсин', 5 => 'виноград' ); $new = array_combine(range(1, count($array)), $array); print_r($new);
Результат:
Array ( [1] => яблоко [2] => апельсин [3] => апельсин )
Получение элементов из массива
Получить первый элемент массива
$array = array( 'яблоко', 'апельсин', 'виноград' ); reset($array); $first = current($array); // яблоко
Получить последний элемент массива
$array = array( 'яблоко', 'апельсин', 'виноград' ); $end = end($array); // виноград
Получить часть (срез) массива
array_slice($array, $offset, $length) возвращает часть массива начиная с индекса $offset длиной $length .
- Если $offset отрицательный, то отчет начинается с конца массива.
- $length можно не указывать, тогда функция вернет все элементы до конца массива начиная с индекса $offset .
$array = array( 'яблоко', 'апельсин', 'виноград' ); $new = array_slice($array, 0, 2); print_r($new);
Результат:
Array ( [0] => яблоко [1] => апельсин )
Извлечь первый элемент массива
array_shift($array) – извлекает первый элемент из массива $array и возвращает его значение.
$array = array( 'яблоко', 'апельсин', 'виноград' ); $first = array_shift($array); // яблоко print_r($array);
Результат:
Array ( [0] => апельсин [1] => виноград )
Извлечь последний элемент массива
array_pop($array) – извлекает последний элемент из массива $array и возвращает его значение.
$array = array( 'яблоко', 'апельсин', 'виноград' ); $end = array_pop($array); // виноград print_r($array);
Результат:
Array ( [0] => яблоко [1] => апельсин )
Извлечь часть массива
Чтобы извлечь из массива часть можно применить функции array_slice() и array_diff() .
$array = array( 'яблоко', 'апельсин', 'виноград' ); $new = array_slice($array, 0, 2); $array = array_diff($array, $new); print_r($new); print_r($array);
Результат:
Array ( [0] => яблоко [1] => апельсин ) Array ( [2] => виноград )
Выбрать все значения из массива
array_values($array) – создает новый массив из исходного $array игнорируя его ключи.
$array = array( 'key 1' => 'яблоко', 'key 2' => 'апельсин', 'key 3' => 'виноград' ); $new = array_values($array); print_r($new);
Результат:
Array ( [0] => яблоко [1] => апельсин [2] => виноград )
Выбрать все ключи массива
array_keys($array) – создает новый массив состоящий из ключей исходного массива.
$array = array( 'key 1' => 'яблоко', 'key 2' => 'апельсин', 'key 3' => 'виноград' ); $new = array_keys($array); print_r($new);
Результат:
Array ( [0] => key 1 [1] => key 2 [2] => key 3 )
Выбирать случайные значения из массива
array_rand($array, $count) возвращает случайным образом один или несколько ключей из массива $array . Если $count больше единицы, то результат будет в виде массива.
$array = array( 3 => 'яблоко', 1 => 'апельсин', 5 => 'виноград' ); echo $array[array_rand($array)];
Поиск и проверка элементов в массиве
Проверить, есть ли значение в массиве
$array = array( 'яблоко', 'апельсин', 'виноград' ); if (in_array('апельсин', $array)) < echo 'Найдено значение "апельсин"'; >// или if (array_search('апельсин', $array) !== false)
Проверить, есть ли ключ в массиве
$array = array( 1 => 'яблоко', 2 => 'апельсин', 3 => 'виноград' ); if (array_key_exists(2, $array)) < echo 'Найден ключ 2'; >// или if (isset($array[2]))
Удаление элементов из массива
unset() – удаляет переменные и элементы массива по ключу.
В первом примере элемент удаляется по ключу, во втором по значению:
$array = array( 'яблоко', 'апельсин', 'виноград' ); // Удаление по ключу unset($array[1]); // Удаление по значению unset($array[array_search('апельсин', $array)]); print_r($array);
Результат:
Array ( [0] => яблоко [2] => виноград )
Удаление пустых значений
В PHP нет отдельной функции для удаления пустых значений в массиве, поэтому применяют array_diff() которая возвращает расхождения массивов.
$array = array( 'яблоко', '', 'виноград' ); $array = array_diff($array, array('')); print_r($array);
Результат:
Array ( [0] => яблоко [2] => виноград )
Если требуется удалить значения включая 0 , null , array() и т.д. можно применить следующее:
$array = array_diff($array, array('', ' ', null, 0, array()));
Удалить повторяющиеся значения массива
$array = array( 'яблоко', 'яблоко', 'апельсин', 'виноград' ); $array = array_unique($array); print_r($array);
Результат:
Array ( [0] => яблоко [2] => апельсин [3] => виноград )
Объединение массивов
Объединить два и более массивов поможет функция array_merge($array_1, $array_2, . ) .
$array_1 = array( 'яблоко', 'апельсин', 'виноград' ); $array_2 = array( 'помидор', 'огурец', ); $new = array_merge($array_1, $array_2); print_r($new);
Результат:
Array ( [0] => яблоко [1] => апельсин [2] => виноград [3] => помидор [4] => огурец )
Разделить массив на части
array_chunk($array, $size) – создает новый многомерный массив из исходного, деля его на равные части.
В данном примере указано $size = 3 , поэтому получается четыре подмассива в каждом из которых по три элемента.
$array = array( 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'ноябрь', 'декабрь', ); $array = array_chunk($array, 3); print_r($array);
Результат:
Array ( [0] => Array ( [0] => январь [1] => февраль [2] => март ) [1] => Array ( [0] => апрель [1] => май [2] => июнь ) [2] => Array ( [0] => июль [1] => август [2] => сентябрь ) [3] => Array ( [0] => ноябрь [1] => декабрь ) )
Если требуется разделить массив на определенное количество частей поможет следующий прием:
$array = array( 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'ноябрь', 'декабрь', ); $array = array_chunk($array, ceil(count($array) / 3)); print_r($array);
Результат:
Array ( [0] => Array ( [0] => январь [1] => февраль [2] => март [3] => апрель ) [1] => Array ( [0] => май [1] => июнь [2] => июль [3] => август ) [2] => Array ( [0] => сентябрь [1] => ноябрь [2] => декабрь ) )
Как добавить элементы в массив в PHP?
На самом деле, операция присваивания значений элементу массива (array) в PHP происходит так же, как и присваивание значений переменной. Но есть небольшая разница: квадратные скобки ([]), добавляемые после имени переменной массива, в данном случае не понадобятся (в таких скобках обычно указывают индекс/ключ элемента). Если же индекс/ключ указаны не будут, PHP выберет наименьший незанятый числовой индекс, сделав это автоматически:
php $my_arr = array( 0 => 'ноль', 1 => 'один'); $my_arr[2] = 'два'; $my_arr[3] = 'три'; var_dump($my_arr); // присваивание без указания ключа/индекса $my_arr[] = 'четыре'; $my_arr[] = 'пять'; echo "
"; var_dump($my_arr); ?>Таким образом, чтобы добавить элемент путём изменения определенного значения, следует просто присвоить новое значение элементу, который уже существует. А чтобы удалить какой-нибудь элемент PHP-массива с его ключом либо удалить сам массив полностью, применяется функция unset():
php $my_arr = array(10, 15, 20); $my_arr[0] = 'радуга'; // изменение значения 1-го элемента unset($my_arr[1]); // полное удаление 2-го элемента (ключ/значение) из массива var_dump($my_arr); unset($my_arr); // полное удаление массива ?>
Тут нужно отметить, что если элемент добавляется в наш массив без ключа, язык программирования PHP автоматически станет использовать предыдущее самое большое значение ключа типа integer, увеличенное на 1. Когда целочисленные индексы в PHP-массиве отсутствуют, ключом становится 0.
Также учтите, что самое большее целое значение ключа совсем необязательно существует в нашем массиве в данный момент, что бывает при удалении элементов массива. А после удаления элементов переиндексация массива array не происходит. На словах всё достаточно сложно, лучше рассмотреть пример:
php // Создаётся простой массив с числовыми индексами $my_arr = array(1, 2, 3); print_r($my_arr); // Теперь удаляются все элементы, однако сам массив остаётся нетронутым: unset($my_arr[0]); unset($my_arr[1]); unset($my_arr[2]); echo "
"; print_r($my_arr); // Добавляется элемент (новым ключом станет 3 вместо 0). $my_arr[] = 6; echo "
"; print_r($my_arr); // Осуществляется переиндексация: $my_arr = array_values($my_arr); $my_arr[] = 7; echo "
"; print_r($my_arr); ?>В вышеописанном примере используются следующие функции: — array_values() — обеспечивает возвращение индексированного массива, заново индексируя возвращаемый массив числовыми индексами; — print_r() — работает как var_dump, однако осуществляет вывод массивов в более удобочитаемом виде.
Как добавить элементы в конец PHP массива?
Добавление одного или нескольких элементов можно выполнить, используя array_push() : int array_push ( array &$array , mixed $value1 [, mixed $. ] ). В нашем случае array_push используется как стек, добавляя переданные значения в конец array-массива. В результате длина array увеличится на количество переданных значений. Схожего эффекта можно достичь и с помощью следующего выражения, повторённого для каждого переданного значения:
Кстати, если нужно добавить только один элемент в PHP-массив, лучше задействовать не array_push, а $array[] = — в этом случае у нас не будет затрат на вызов функции.
Рассмотрим параметры работы:
array Наш входной массив. value1 1-е значение, добавляемое в конец нашего массива array.
Что касается возвращаемых значений, то будет возвращено новое количество элементов в массиве.
Рассмотрим использование array_push() на примере:
php $stack = array("banana , "orange"); array_push($stack, "raspberry", "apple"); print_r($stack); ?>
Array ( [0] => banana [1] => orange [2] => raspberry [3] => apple )Как видите, ничего сложного. Если же интересует более сложная практика, её вы найдёте на нашем курсе по PHP-разработке: