Как создаются массивы в PHP
Способы создания массивов в PHP
Как создать массив с помощью квадратных скобок (основной способ)?
Начиная с PHP 5.4, рекомендуется использовать короткий синтаксис с квадратными скобками []. Это самый эффективный и читаемый способ.
$arr = [1, 2, 3];
$assoc = ['name' => 'Иван', 'age' => 25];
сделать массив php (создание массива в php)
Типичные ошибки:
- Использование
[]в версии PHP ниже 5.4 вызовет синтаксическую ошибку. - Пропуск запятой между элементами:
[1 2 3]- синтаксическая ошибка. - Смешивание ключей: числовые и строковые ключи в одном массиве могут привести к путанице при обходе.
Как создать индексированный массив с помощью функции array()?
До PHP 5.4 основным способом была функция array(). Она до сих пор работает и может использоваться для обратной совместимости.
$arr = array(1, 2, 3);
Undefined key php (ошибка undefined key в php)
Основной недостаток - более длинная запись. Ошибки те же: пропуск запятой, неверный синтаксис ключа.
Как создать ассоциативный массив?
Ассоциативный массив использует строковые ключи. Можно задать ключи явно.
$user = ['name' => 'Анна', 'email' => 'anna@example.com'];
Ошибка: если ключ не указать, PHP автоматически назначит числовой индекс (0, 1…). Это может быть неожиданным, если следующий элемент имеет строковый ключ.
Как создать многомерный массив?
Массивы могут содержать другие массивы в качестве элементов.
$matrix = [
[1, 2],
[3, 4]
];
$students = [
'group1' => ['Иван', 'Петр'],
'group2' => ['Анна']
];
При обращении к вложенным элементам легко ошибиться в количестве уровней. Например, $matrix[0] вернёт массив, а не число.
Как создать массив из диапазона чисел?
Функция range() создаёт массив, содержащий последовательность чисел или символов.
$numbers = range(5, 10);
$chars = range('a', 'd');
По умолчанию шаг равен 1. Если нужен другой шаг, передайте третий аргумент. Также range() может создавать большие массивы - следите за памятью.
Как создать массив из строки?
Используйте explode() для разделения строки по разделителю или str_split() для разбивки на символы.
$words = explode(',', 'яблоко,груша,вишня');
$letters = str_split('PHP');
При explode() следите за наличием пробелов после разделителя - они попадут в массив. str_split() для многобайтовых кодировок работает некорректно, используйте mb_str_split().
Как создать массив из переменных с сохранением имён?
Функция compact() создаёт ассоциативный массив, где ключи - имена переменных, а значения - их значения.
$city = 'Москва';
$year = 2024;
$data = compact('city', 'year');
// ['city' => 'Москва', 'year' => 2024]
Имена переменных передаются как строки. Если переменная не определена, будет предупреждение.
Как создать массив с одинаковыми значениями?
Функция array_fill() заполняет массив заданным значением начиная с указанного индекса.
$filled = array_fill(0, 5, 'default');
// [0 => 'default', 1 => 'default', ...]
Первый аргумент - начальный индекс (может быть отрицательным). Если начальный индекс не 0, то массив будет с пропусками.
Как создать массив из двух массивов (ключи и значения)?
Функция array_combine() создаёт ассоциативный массив, используя один массив как ключи, другой - как значения.
$keys = ['name', 'age'];
$values = ['Павел', 30];
$user = array_combine($keys, $values);
Массивы должны быть одинаковой длины, иначе будет false и предупреждение. Ключи должны быть уникальными - последнее значение перезапишет предыдущие.
Расширенные примеры создания массивов
Пример 1: Создание ассоциативного массива и доступ к элементам
$user = [
'id' => 123,
'name' => 'Елена',
'roles' => ['admin', 'editor']
];
echo $user['name'];
echo ' | ';
print_r($user['roles']);
Елена | Array ( [0] => admin [1] => editor )
Массив может содержать другие массивы. Обращаться к вложенным элементам можно через цепочку индексов: $user['roles'][0].
Пример 2: Создание многомерного массива с числовыми индексами
$matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
// Доступ к элементу второй строки, третьего столбца
echo $matrix[1][2];
6
Индексы строк и столбцов начинаются с 0. Для перебора используйте вложенные циклы.
Пример 3: Использование range() с шагом
$even = range(0, 10, 2);
print_r($even);
Array ( [0] => 0 [1] => 2 [2] => 4 [3] => 6 [4] => 8 [5] => 10 )
Третий аргумент - шаг. Можно также создавать последовательности символов: range('a', 'z', 2) вернёт a, c, e…
Пример 4: Создание массива с помощью array_combine()
$keys = ['a', 'b', 'c'];
$values = [1, 2, 3];
$combined = array_combine($keys, $values);
print_r($combined);
Array ( [a] => 1 [b] => 2 [c] => 3 )
Если количество элементов разное, возникнет ошибка. Проверяйте длины массивов перед вызовом.
Пример 5: Разделение строки на массив и обратное преобразование
$csv = 'apple,banana,grape';
$fruits = explode(',', $csv);
print_r($fruits);
// Обратно в строку
$newCsv = implode(' | ', $fruits);
echo $newCsv;
Array ( [0] => apple [1] => banana [2] => grape ) apple | banana | grape
Функции explode() и implode() удобны для работы с CSV и текстовыми данными.
Пример 6: Создание массива с помощью array_fill()
$defaults = array_fill(0, 3, ['status' => 'pending']);
print_r($defaults);
Array ( [0] => Array ( [status] => pending ) [1] => Array ( [status] => pending ) [2] => Array ( [status] => pending ) )
Внимание: array_fill создаёт массив, где каждый элемент - одна и та же ссылка на объект (или массив), если значение не является примитивом. Для массивов это приведёт к изменению всех элементов при модификации одного.
Пример 7: Функция compact() для создания массива из переменных
$username = 'admin';
$email = 'admin@site.com';
$userInfo = compact('username', 'email');
print_r($userInfo);
Array ( [username] => admin [email] => admin@site.com )
Это удобно при подготовке данных для передачи в шаблон или при логировании.
Пример 8: Динамическое добавление элементов в массив
$arr = [];
$arr[] = 10;
$arr[] = 20;
$arr['key'] = 'value';
print_r($arr);
Array ( [0] => 10 [1] => 20 [key] => value )
Оператор [] в конце добавляет элемент с автоматическим числовым индексом. Если ключ не указан, PHP берёт максимальный целочисленный индекс + 1.