Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.
Создать массив и заполнить его значениями
$array = array(
'яблоко',
'апельсин',
'виноград'
);
// или
$array = array();
$array[] = 'яблоко';
$array[] = 'апельсин';
$array[] = 'виноград';
Можно применить функцию array_fill($start, $size, $value)
, которая создаст массив с количеством $size
элементов со значением $value
, начиная с индекса $start
.
Данный пример создает массив с тремя элементам «текст», ключи которых будут начинаться с нуля.
Результат:
Array
(
[0] => текст
[1] => текст
[2] => текст
)
Еще вариант – функция explode($delimiter, $string)
, которая из строки $string
создаст массив используя разделитель $delimiter
, в данном примере запятая.
Результат:
Array
(
[0] => текст 1
[1] => текст 2
[2] => текст 3
)
Если массив ассоциативный (многомерный), то count()
вернёт количество элементов только первого уровня. Чтобы получит количество всех элементов нужно использовать константу COUNT_RECURSIVE
.
Добавить значение в начало массива
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_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) {
echo 'Найдено значение "апельсин"';
}
Проверить, есть ли ключ в массиве
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(
'яблоко',
'яблоко',
'апельсин',
'виноград'
);
$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] => декабрь
)
)
Везде и повсеместно...
Вот вам простой пример, абсолютно то же самое что и в первом примере.