Массивы в PHP: подробный гид по созданию и инициализации
Массивы в PHP - это упорядоченные структуры данных, которые могут содержать элементы разных типов. Для начала работы с массивом его необходимо задать (инициализировать). Существует несколько способов, каждый из которых подходит для определенных задач. Ниже рассматриваются основные варианты.
Основные методы инициализации массивов
Как создать массив с помощью квадратных скобок?
Начиная с PHP 5.4 наиболее эффективный и компактный способ - использование синтаксиса []. Он короче, быстрее и читаемее.
$arr = ['apple', 'banana', 'cherry'];Php задать массив (задание массива в php)
Array ( [0] => apple [1] => banana [2] => cherry )
Этот синтаксис подходит для создания индексированных, ассоциативных и многомерных массивов. Рекомендуется для всех современных проектов.
Типичная ошибка:
Использование [] в PHP версии ниже 5.4 вызывает синтаксическую ошибку. Решение: использовать array() или обновить интерпретатор.
Также при интерполяции строк с ключами массива могут возникнуть неожиданности, но они легко решаются фигурными скобками.
Как задать массив традиционным способом array()?
Функция array() доступна во всех версиях PHP и является универсальным способом создания массива.
$arr = array('red', 'green', 'blue');
Array ( [0] => red [1] => green [2] => blue )
Цель: обратная совместимость, явное указание на массив. Хорошо подходит для кода, который должен работать на старых версиях PHP.
Ошибок практически нет, но запись длиннее, и при большом количестве элементов снижается читаемость.
Как создать массив путем добавления элементов без указания индекса?
Синтаксис $arr[] = value автоматически добавляет элемент в конец массива, создавая его, если он не существовал.
$arr = [];
$arr[] = 'first';
$arr[] = 'second';
Array ( [0] => first [1] => second )
Используется для динамического построения массива, когда точное количество элементов неизвестно. Например, при переборе результатов из базы данных.
Если переменная не была инициализирована как массив, оператор [] создаст предупреждение (Notice) и преобразует переменную в массив. Всегда лучше явно инициализировать массив (например, $arr = []).
Как быстро создать массив чисел из диапазона?
Функция range() возвращает массив, содержащий последовательность чисел или символов.
$numbers = range(1, 5);
$letters = range('a', 'c');
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) Array ( [0] => a [1] => b [2] => c )
Удобно для создания тестовых данных или перебора значений. Третий параметр позволяет задать шаг.
При использовании с большими диапазонами может потреблять много памяти. Для последовательностей лучше использовать генераторы (yield).
Как преобразовать строку в массив по разделителю?
Функция explode() разбивает строку на части и возвращает массив строк.
$str = 'one,two,three';
$arr = explode(',', $str);
Array ( [0] => one [1] => two [2] => three )
Цель: парсинг CSV-данных, URL-параметров, логирование. Обратная операция - implode().
Если разделитель не найден, возвращается массив с одним элементом - исходной строкой. Пустая строка при разбиении даст массив с одним пустым элементом.
Как создать ассоциативный массив из переменных?
Функция compact() создает массив, где ключами являются имена переменных, а значениями - их значения.
$name = 'Alice';
$age = 30;
$arr = compact('name', 'age');
Array ( [name] => Alice [age] => 30 )
Используется для передачи набора переменных в функцию или шаблон без ручного указания ключей. Удобно при работе с формами.
Если переменная не определена, compact() проигнорирует её (без ошибки). Проверка существования переменной ложится на программиста.
Как заполнить массив заданным значением определенное количество раз?
Функция array_fill() создает массив, заполненный указанным значением, начиная с заданного индекса и с заданным количеством элементов.
$arr = array_fill(0, 3, 'default');
Array ( [0] => default [1] => default [2] => default )
Применяется для инициализации массивов с одинаковыми значениями (например, для счётчиков).
Нельзя заполнить отрицательным количеством (ошибка). Также если указан стартовый индекс, массив будет разреженным, что может привести к неожиданному поведению при итерации.
Как создать массив, используя ключи из одного массива и значения из другого?
Функция array_combine() объединяет два массива: первый становятся ключами, второй - значениями.
$keys = ['name', 'age'];
$values = ['Bob', 25];
$arr = array_combine($keys, $values);
Array ( [name] => Bob [age] => 25 )
Удобно для создания ассоциативного массива из двух отдельных списков.
Оба массива должны иметь одинаковое количество элементов, иначе false и предупреждение. Также ключи должны быть уникальными, иначе последний перезапишет предыдущий.
Как присвоить элементы массива отдельным переменным?
Конструкция list() (или [] начиная с PHP 7.1) позволяет извлечь значения массива в переменные.
$info = ['Alice', 30];
list($name, $age) = $info;
// или [$name, $age] = $info;
Цель: быстрая деструктуризация, особенно при работе с функциями, возвращающими массивы.
Если количество переменных больше, чем элементов, неприсвоенные переменные получат null. При использовании list() с ассоциативными массивами (PHP 7.1+) требуется явное указание ключей.
Расширенные примеры задания массивов
Ниже представлены менее распространенные, но полезные техники инициализации массивов.
Создание массива с помощью array_fill_keys
Функция array_fill_keys() заполняет массив значениями, используя указанные ключи.
$keys = ['a', 'b', 'c'];
$arr = array_fill_keys($keys, 0);
Array ( [a] => 0 [b] => 0 [c] => 0 )
Применяется для инициализации ассоциативного массива с одинаковыми значениями для каждого ключа.
Дополнение массива до нужной длины с array_pad
array_pad() дополняет массив до заданной длины указанным значением.
$arr = ['x', 'y'];
$padded = array_pad($arr, 5, 'z');
Array ( [0] => x [1] => y [2] => z [3] => z [4] => z )
Полезно, когда требуется гарантировать минимальное количество элементов.
Создание подмассива с array_slice
Извлечение части массива функцией array_slice().
$original = [1,2,3,4,5];
$slice = array_slice($original, 1, 2);
Array ( [0] => 2 [1] => 3 )
Используется для получения диапазона элементов, например, для пагинации.
Многомерные массивы с использованием квадратных скобок
Создание двумерного массива в одну строку.
$matrix = [
[1, 2],
[3, 4]
];
Array ( [0] => Array ( [0] => 1 [1] => 2 ) [1] => Array ( [0] => 3 [1] => 4 ) )
Короткий синтаксис особенно удобен для вложенных структур.
Динамическое создание массива с помощью цикла и []
Часто массив формируется в процессе итерации.
$results = [];
foreach ([10, 20, 30] as $value) {
$results[] = $value * 2;
}
Array ( [0] => 20 [1] => 40 [2] => 60 )
Это стандартный паттерн для трансформации данных.
Создание массива с помощью генератора (yield) и iterator_to_array
Генераторы экономят память при больших последовательностях, но их можно преобразовать в массив.
function generateNumbers($max) {
for ($i = 1; $i <= $max; $i++) {
yield $i;
}
}
$arr = iterator_to_array(generateNumbers(5));
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
Гибкий способ для ленивых вычислений с возможностью создания массива при необходимости.
Использование array_merge для объединения нескольких массивов
array_merge() создает новый массив из переданных.
$a = [1, 2];
$b = [3, 4];
$merged = array_merge($a, $b);
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
Позволяет комбинировать данные из разных источников. Важно: числовые ключи переиндексируются.
Создание ассоциативного массива с помощью array_map и array_combine
Например, преобразовать список ключей и список значений через callback.
$keys = ['id', 'name'];
$values = [1, 'Alice'];
$arr = array_combine($keys, array_map('strval', $values));
// или более сложный вариант с кастомной функцией
Редко используется в чистом виде, но демонстрирует гибкость.