Array combine: примеры (PHP)
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.
Цикл позволяет создавать ассоциативные массивы вручную, что дает больше контроля над процессом, но требует написания большего количества кода.
Типичные ошибки
$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)
Расширенные примеры
$configKeys = ['db_host', 'db_user', 'db_pass'];
$configValues = ['localhost', 'admin', 'secret'];
$config = array_combine($configKeys, $configValues);
// Результат доступен как $config['db_host']$headers = ['id', 'name', 'email'];
$row = ['123', 'Иван', 'ivan@example.com'];
$userData = array_combine($headers, $row);$properties = ['title', 'price', 'quantity'];
$values = ['Книга', 500, 10];
$product = (object)array_combine($properties, $values);
// Доступ: $product->title, $product->price$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
)$months = range(1, 12);
$monthNames = ['янв', 'фев', 'мар', 'апр', 'май', 'июн',
'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'];
$monthMap = array_combine($months, $monthNames);$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 или создание временных таблиц.