Как создавать массивы в PHP
Создание массива в PHP: основные способы
Основной способ с использованием квадратных скобок
В современном PHP (начиная с версии 5.4) предпочтительным считается синтаксис с квадратными скобками []. Он короче и интуитивно понятен.
Как создать пустой массив?
$emptyArray = [];Assign php (присваивание в php)
Как создать массив с числовыми индексами?
$numbers = [10, 20, 30, 40];
// Результат: [0 => 10, 1 => 20, 2 => 30, 3 => 40]Php создать массив (создание массива в php)
Как создать ассоциативный массив?
$user = [
'login' => 'alex',
'email' => 'alex@example.com',
'age' => 25
];
тернарный оператор php (тернарный оператор php)
Пояснение
В первом примере создается пустой массив без элементов. Во втором – индексированный массив (ключи присваиваются автоматически, начиная с 0). В третьем – ассоциативный массив с именованными ключами.
Типичная ошибка
Попытка использовать несуществующий ключ (например, $user['name'], если его нет) приведет к предупреждению Undefined array key в PHP 8.x. Используйте функцию isset() или оператор ?? для безопасного доступа.
Как создать массив с помощью функции array()?
$colors = array('red', 'green', 'blue');
$person = array('name' => 'Ivan', 'age' => 30);
Функция array() – классический способ, работает во всех версиях PHP, но синтаксис длиннее. Рекомендуется для поддержки старых проектов.
Проблема: при опечатке в ключе (например, 'naem' вместо 'name') ошибка не возникнет, но логика нарушится. Внимательно проверяйте имена ключей.
Как быстро заполнить массив одинаковыми значениями?
$scores = array_fill(0, 5, 0);
// Результат: [0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0]
Параметры: начальный индекс, количество элементов, значение. Удобно для создания массива с заданным размером.
Если передать отрицательный начальный индекс (array_fill(-2, 3, 'x')), ключи начнутся с -2, а не с 0.
Как создать последовательность чисел?
$even = range(2, 10, 2);
// Результат: [2, 4, 6, 8, 10]
$letters = range('a', 'e');
// Результат: ['a', 'b', 'c', 'd', 'e']
range() генерирует массив, заполненный элементами от начального до конечного значения с заданным шагом. Поддерживает числа и символы.
Для очень больших диапазонов (например, от 1 до 1000000) range() может потреблять много памяти. Рассмотрите генераторы.
Как разбить строку на массив?
$csv = 'apple,banana,cherry';
$fruits = explode(',', $csv);
// Результат: ['apple', 'banana', 'cherry']
explode() разделяет строку по разделителю. Обратная операция – implode().
Если разделитель не найден, возвращается массив с одним элементом – исходной строкой. Пустая строка '' вернет массив с одной пустой строкой.
Как создать массив из переменных?
$city = 'Moscow';
$country = 'Russia';
$data = compact('city', 'country');
// Результат: ['city' => 'Moscow', 'country' => 'Russia']
Функция compact() принимает строки – имена переменных, и создает ассоциативный массив, где ключи – эти имена, а значения – текущие значения переменных. Удобно для выборочной группировки.
Если переменная не определена, PHP выдаст предупреждение, а в массиве будет null. Всегда проверяйте существование переменных.
Расширенные примеры создания массивов
1. Создание многомерного массива с помощью вложенных квадратных скобок
$matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
// Доступ: $matrix[1][2] -> 6
Результат: массив из трёх вложенных массивов.
2. Создание массива с ключами из одного массива и значениями из другого (array_combine)
$keys = ['username', 'email', 'role'];
$values = ['john', 'john@site.com', 'admin'];
$user = array_combine($keys, $values);
// Результат: ['username' => 'john', 'email' => 'john@site.com', 'role' => 'admin']
При разной длине массивов array_combine() вернёт false и вызовет предупреждение.
3. Создание массива с помощью list() для присваивания
list($a, $b, $c) = [10, 20, 30];
// $a = 10, $b = 20, $c = 30
// С PHP 7.1 можно использовать симметричный синтаксис:
[$d, $e, $f] = [40, 50, 60];
Переменные получают значения из массива.
4. Создание массива с помощью генератора (экономия памяти)
function generateNumbers($max) {
for ($i = 1; $i <= $max; $i++) {
yield $i;
}
}
$generator = generateNumbers(5);
$array = iterator_to_array($generator);
// Результат: [1, 2, 3, 4, 5]
iterator_to_array() преобразует генератор в массив. Подходит для больших наборов данных.
5. Создание массива из строки по одному символу (str_split)
$word = 'PHP';
$chars = str_split($word);
// Результат: ['P', 'H', 'P']
Если второй параметр (длина фрагмента) не указан, делит по одному символу.
6. Создание массива с помощью array_fill_keys (заполнение ключей одним значением)
$keys = ['first', 'second', 'third'];
$filled = array_fill_keys($keys, 'default');
// Результат: ['first' => 'default', 'second' => 'default', 'third' => 'default']
Удобно для инициализации массива с заранее известными ключами.
7. Создание массива с помощью unpack() из бинарных данных
$binary = pack('C*', 72, 73, 74); // H, I, J
$array = unpack('C*', $binary);
// Результат: [1 => 72, 2 => 73, 3 => 74]
Ключи начинаются с 1, а не с 0. Удобно для работы с бинарными протоколами.
8. Создание массива с помощью array_replace для объединения с переопределением
$base = ['a' => 1, 'b' => 2];
$override = ['b' => 3, 'c' => 4];
$result = array_replace($base, $override);
// Результат: ['a' => 1, 'b' => 3, 'c' => 4]
array_replace() перезаписывает значения существующих ключей и добавляет новые.