Работа с массивами PHP – создание, наполнение, удаление

Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.

1
$array = array(
	'яблоко',
	'апельсин',
	'виноград'
);

// или

$array = array();
$array[] = 'яблоко';
$array[] = 'апельсин';
$array[] = 'виноград';
PHP

Можно применить функцию array_fill($start, $size, $value), которая создаст массив с количеством $size элементов со значением $value, начиная с индекса $start.

Данный пример создает массив с тремя элементам «текст», ключи которых будут начинаться с нуля.

$array = array_fill(0, 3, 'текст');
print_r($array);
PHP

Результат:

Array
(
    [0] => текст
    [1] => текст
    [2] => текст
)

Еще вариант – функция explode($delimiter, $string), которая из строки $string создаст массив используя разделитель $delimiter, в данном примере запятая.

$array = explode(',', 'текст 1,текст 2,текст 3');
print_r($array);
PHP

Результат:

Array
(
    [0] => текст 1
    [1] => текст 2
    [2] => текст 3
)
2
echo count($array);

// или 
echo sizeof($array);
PHP

Если массив ассоциативный (многомерный), то count() вернёт количество элементов только первого уровня. Чтобы получит количество всех элементов нужно использовать константу COUNT_RECURSIVE.

$array = array(
	array(
		'яблоко',
		'апельсин',
		'виноград'
	),
	array(
		'яблоко',
		'апельсин',
		'виноград'
	)
);

echo count($array);                    // вернет 2
echo count($array, COUNT_RECURSIVE);   // вернет 8
PHP
3

array_unshift($array, $value) – добавляет одно или несколько элементов в начало массива.

$array = array(
	'яблоко',
	'апельсин',
	'виноград'
);

array_unshift($array, 'банан');
print_r($array);
PHP

Результат:

Array
(
    [0] => банан
    [1] => яблоко
    [2] => апельсин
    [3] => виноград
)

array_push($array, $value) – добавляет значение в конец массива.

$array = array(
	'яблоко',
	'апельсин',
	'виноград'
);

array_push($array, 'банан');

// или
$array[] = 'банан';

print_r($array);
PHP

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
    [2] => виноград
    [3] => банан
    [4] => банан
)
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;
	}
}
PHP
$array = array(
	1 => 'яблоко',
	3 => 'апельсин',
	5 => 'виноград'
);

echo array_key_first($array); // 1
PHP

Функция 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];
	}
}
PHP
$array = array(
	1 => 'яблоко',
	3 => 'апельсин',
	5 => 'виноград'
);

echo array_key_last($array); // 5
PHP
К примеру, после удаления элемента массива сбивается нумерация ключей и нужно назначить новую нумерацию:
$array = array(
	1 => 'яблоко',
	3 => 'апельсин',
	5 => 'виноград'
);

$new = array_values($array);
print_r($new);
PHP

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
    [2] => апельсин
)

Начало нумерации ключей с единицы:

$array = array(
	1 => 'яблоко',
	3 => 'апельсин',
	5 => 'виноград'
);

$new = array_combine(range(1, count($array)), $array);
print_r($new);
PHP

Результат:

Array
(
    [1] => яблоко
    [2] => апельсин
    [3] => апельсин
)
5
$array = array(
	'яблоко',
	'апельсин',
	'виноград'
);

reset($array);
$first = current($array);  // яблоко
PHP
$array = array(
	'яблоко',
	'апельсин',
	'виноград'
);

$end = end($array);  // виноград
PHP

array_slice($array, $offset, $length) возвращает часть массива начиная с индекса $offset длиной $length.

  • Если $offset отрицательный, то отчет начинается с конца массива.
  • $length можно не указывать, тогда функция вернет все элементы до конца массива начиная с индекса $offset.
$array = array(
	'яблоко',
	'апельсин',
	'виноград'
);

$new = array_slice($array, 0, 2);
print_r($new);
PHP

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
)

array_shift($array) – извлекает первый элемент из массива $array и возвращает его значение.

$array = array(
	'яблоко',
	'апельсин',
	'виноград'
);

$first = array_shift($array); // яблоко

print_r($array);
PHP

Результат:

Array
(
    [0] => апельсин
    [1] => виноград
)

array_pop($array) – извлекает последний элемент из массива $array и возвращает его значение.

$array = array(
	'яблоко',
	'апельсин',
	'виноград'
);

$end = array_pop($array); // виноград
print_r($array);
PHP

Результат:

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);
PHP

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
)

Array
(
    [2] => виноград
)

array_values($array) – создает новый массив из исходного $array игнорируя его ключи.

$array = array(
	'key 1' => 'яблоко',
	'key 2' => 'апельсин',
	'key 3' => 'виноград'
);

$new = array_values($array);
print_r($new);
PHP

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
    [2] => виноград
)

array_keys($array) – создает новый массив состоящий из ключей исходного массива.

$array = array(
	'key 1' => 'яблоко',
	'key 2' => 'апельсин',
	'key 3' => 'виноград'
);

$new = array_keys($array);
print_r($new);
PHP

Результат:

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)];
PHP
6
$array = array(
	'яблоко',
	'апельсин',
	'виноград'
);

if (in_array('апельсин', $array)) {
	echo 'Найдено значение "апельсин"';
}

// или 
if (array_search('апельсин', $array) !== false) {
	echo 'Найдено значение "апельсин"';
}
PHP
$array = array(
	1 => 'яблоко',
	2 => 'апельсин',
	3 => 'виноград'
);

if (array_key_exists(2, $array)) {
	echo 'Найден ключ 2';
}

// или
if (isset($array[2])) {
	echo 'Найден ключ 2';
}
PHP
7

unset() – удаляет переменные и элементы массива по ключу.

В первом примере элемент удаляется по ключу, во втором по значению:

$array = array(
	'яблоко',
	'апельсин',
	'виноград'
);

// Удаление по ключу
unset($array[1]);

// Удаление по значению
unset($array[array_search('апельсин', $array)]);

print_r($array);
PHP

Результат:

Array
(
    [0] => яблоко
    [2] => виноград
)

В PHP нет отдельной функции для удаления пустых значений в массиве, поэтому применяют array_diff() которая возвращает расхождения массивов.

$array = array(
	'яблоко',
	'',
	'виноград'
);

$array = array_diff($array, array(''));
print_r($array);
PHP

Результат:

Array
(
    [0] => яблоко
    [2] => виноград
)

Если требуется удалить значения включая 0, null, array() и т.д. можно применить следующее:

$array = array_diff($array, array('', ' ', null, 0, array()));
PHP
$array = array(
	'яблоко',
	'яблоко',
	'апельсин',
	'виноград'
);

$array = array_unique($array);
print_r($array);
PHP

Результат:

Array
(
    [0] => яблоко
    [2] => апельсин
    [3] => виноград
)
8

Объединить два и более массивов поможет функция array_merge($array_1, $array_2, ...).

$array_1 = array(
	'яблоко',
	'апельсин',
	'виноград'
);

$array_2 = array(
	'помидор',
	'огурец',
);

$new = array_merge($array_1, $array_2);
print_r($new);
PHP

Результат:

Array
(
    [0] => яблоко
    [1] => апельсин
    [2] => виноград
    [3] => помидор
    [4] => огурец
)
9

array_chunk($array, $size) – создает новый многомерный массив из исходного, деля его на равные части.

В данном примере указано $size = 3, поэтому получается четыре подмассива в каждом из которых по три элемента.

$array = array(
	'январь',
	'февраль',
	'март',
	'апрель',
	'май',
	'июнь',
	'июль',
	'август',
	'сентябрь',
	'ноябрь',
	'декабрь',
);

$array = array_chunk($array, 3);
print_r($array);
PHP

Результат:

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);
PHP

Результат:

Array
(
    [0] => Array
        (
            [0] => январь
            [1] => февраль
            [2] => март
            [3] => апрель
        )
    [1] => Array
        (
            [0] => май
            [1] => июнь
            [2] => июль
            [3] => август
        )
    [2] => Array
        (
            [0] => сентябрь
            [1] => ноябрь
            [2] => декабрь
        )
)
29.10.2017, обновлено 04.12.2021
98347
Предыдущая запись PHP-класс обертка для PDO
Следующая запись Сортировка массивов

Комментарии 2

Рашид Б. Рашид Б.
19 апреля 2023 в 17:35
По поводу "Удаление пустых значений массива", могу предложить следующее
$arr = ['яблоко', '', 'виноград'];
$arr = array_filter($arr, fn($n) => $n); // очищаем от пустых значений
$arr = array_values($arr); // сбрасываем порядок ключей
print_r($arr);
Андрей Перминов Андрей Перминов
20 декабря 2023 в 11:18
Почему бы не рассматривать рабочие примеры, а не писать всякую хрень по типу 1-ого примера? Где вы видели, чтобы такой пример хоть где-то использовался? В инете одно и то же- копипастите друг у друга, вместо того, чтобы написать, как нужно РЕАЛЬНО работать с массивами.

, чтобы добавить комментарий.

Другие публикации

Сортировка массива по количеству символов
Помимо стандартных функций сортировки в PHP есть функции с использованием пользовательских вызовов для сравнения...
4519
0
Как вывести PHP массив
Примеры использования PHP функций и циклов для вывода всех элементов массива в окно браузера.
88038
+5
array_unique для многомерных массивов
Функция array_unique возвращает массив без повторяющихся значений, она работает и с многомерными массивами.
21234
+3
Работа с FTP в PHP
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
18208
+2
Преобразование цветов в PHP
Несколько примеров как перевести цвета из HEX в RGB и обратно с помощью PHP.
15798
-1
Календарь на PHP
PHP-класс для вывода календаря на месяц, год или любой другой интервал с возможностью выделить отдельные даты и вывести к ним подсказки.
30487
+10