Как создаются массивы в PHP

Раздел: Основы PHP -> Массивы в 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.

Создание массива в PHP - comments

En
сделать массив php (php)