Array combine: примеры (PHP)

Использование array_combine для создания ассоциативных массивов
Раздел: Работа с массивами
array_combine(array $keys, array $values): array

Основы функции array_combine

Функция array_combine создает новый массив, используя один массив для ключей, а другой для его значений. Применяется в случаях, когда необходимо объединить два набора данных в ассоциативный массив.

Синтаксис и параметры

Функция принимает два обязательных аргумента:

array_combine(array $keys, array $values): array
  • $keys - массив, значения которого становятся ключами результирующего массива. Эти значения преобразуются в строку или целое число, следуя стандартным правилам приведения типов ключей массива.
  • $values - массив, значения которого становятся значениями результирующего массива.

Функция возвращает новый ассоциативный массив или false в случае возникновения ошибки.

Базовые примеры использования

Простой пример создания ассоциативного массива
$keys = ['name', 'age', 'city'];
$values = ['Алексей', 30, 'Москва'];
$result = array_combine($keys, $values);
Array
(
    [name] => Алексей
    [age] => 30
    [city] => Москва
)
Использование числовых ключей
$keys = [1, 2, 3];
$values = ['январь', 'февраль', 'март'];
$result = array_combine($keys, $values);
Array
(
    [1] => январь
    [2] => февраль
    [3] => март
)
Совпадение ключей
$keys = ['a', 'a', 'b'];
$values = [1, 2, 3];
$result = array_combine($keys, $values);
Array
(
    [a] => 2
    [b] => 3
)

Похожие функции в PHP

Объединяет несколько массивов. Отличается от array_combine тем, что работает с готовыми массивами, а не создает новый из двух отдельных списков.

Применяет callback-функцию к элементам одного или нескольких массивов. Может создавать ассоциативные массивы при использовании с array_keys и array_values.

foreach

Цикл позволяет создавать ассоциативные массивы вручную, что дает больше контроля над процессом, но требует написания большего количества кода.

Типичные ошибки

Разное количество элементов
$keys = ['a', 'b'];
$values = [1, 2, 3];
$result = array_combine($keys, $values);
Warning: array_combine(): Both parameters should have an equal number of elements
Пустые массивы
$keys = [];
$values = [];
$result = array_combine($keys, $values);
Warning: array_combine(): Both parameters should have at least 1 element
Некорректные типы ключей
$keys = [['nested']];
$values = ['value'];
$result = array_combine($keys, $values);
Warning: Illegal offset type

Изменения в новых версиях PHP

В PHP 8.0 функция теперь выбрасывает исключение ValueError при передаче массивов разной длины, вместо генерации предупреждения и возврата false. Это соответствует общей тенденции PHP 8 к более строгой обработке ошибок.

// PHP 8+ при разных размерах массивов
$keys = ['a', 'b'];
$values = [1];
$result = array_combine($keys, $values);
ValueError: array_combine(): Argument #2 ($values) must have the same number of elements as argument #1 ($keys)

Расширенные примеры

Создание конфигурационного массива
Пример php
$configKeys = ['db_host', 'db_user', 'db_pass'];
$configValues = ['localhost', 'admin', 'secret'];
$config = array_combine($configKeys, $configValues);

// Результат доступен как $config['db_host']
Трансформация данных из CSV
Пример php
$headers = ['id', 'name', 'email'];
$row = ['123', 'Иван', 'ivan@example.com'];
$userData = array_combine($headers, $row);
Создание массива объектов
Пример php
$properties = ['title', 'price', 'quantity'];
$values = ['Книга', 500, 10];

$product = (object)array_combine($properties, $values);
// Доступ: $product->title, $product->price
Объединение с array_map
Пример php
$keys = ['price_1', 'price_2', 'price_3'];
$values = [100, 200, 300];

// Добавление налога к каждому значению
$valuesWithTax = array_map(fn($price) => $price * 1.2, $values);
$result = array_combine($keys, $valuesWithTax);
Array
(
    [price_1] => 120
    [price_2] => 240
    [price_3] => 360
)
Работа с числовыми диапазонами
Пример php
$months = range(1, 12);
$monthNames = ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 
               'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'];
$monthMap = array_combine($months, $monthNames);
Создание lookup-таблицы
Пример php
$ids = [101, 102, 103, 104];
$names = ['Алексей', 'Мария', 'Иван', 'Ольга'];
$idToName = array_combine($ids, $names);

// Быстрый поиск имени по ID
$name = $idToName[102] ?? 'Не найдено'; // 'Мария'

Аналоги в других языках программирования

Array combine в Python

keys = ['name', 'age', 'city']
values = ['Алексей', 30, 'Москва']
result = dict(zip(keys, values))
{'name': 'Алексей', 'age': 30, 'city': 'Москва'}

Array combine в Javascript

const keys = ['name', 'age', 'city'];
const values = ['Алексей', 30, 'Москва'];
const result = Object.fromEntries(
  keys.map((key, i) => [key, values[i]])
);
{name: 'Алексей', age: 30, city: 'Москва'}

Array combine в MySQL

Прямого аналога нет, но можно использовать комбинацию функций JSON_OBJECT или создание временных таблиц.

PHP array_combine function comments

En
Array combine Creates an array by using one array for keys and another for its values