У меня два массива одинакового размера. Я хотел бы объединить два, поэтому значения одного являются ключевыми индексами нового массива, а значения нового массива – значениями другого.
Прямо сейчас я просто перебираю массивы и создаю новый массив вручную, но у меня есть ощущение, что есть намного более элегантный способ сделать это. Я не вижу никаких функций массива для этой цели, но, может быть, я что-то пропустил? Есть ли простой способ для этого в этом направлении?
$mapped_array = mapkeys($array_with_keys, $array_with_values);
См. array_combine()
на PHP.net.
(из документов для удобного чтения)
array_combine – создает массив с использованием одного массива для ключей, а другой для его значений
Описание
array array_combine ( array $keys , array $values )
Создает массив, используя значения из массива ключей как ключи, а значения из массива значений – соответствующие значения.
параметры
keys – Массив ключей, которые будут использоваться. Недопустимые значения для ключа будут преобразованы в строку.
values - массив значений, которые будут использоваться
пример
<?php $a = array('green', 'red', 'yellow'); $b = array('avocado', 'apple', 'banana'); $c = array_combine($a, $b); print_r($c); ?>
Вышеприведенный пример выводит:
Array ( [green] => avocado [red] => apple [yellow] => banana )
Это должно сделать трюк
function array_merge_keys($ray1, $ray2) { $keys = array_merge(array_keys($ray1), array_keys($ray2)); $vals = array_merge($ray1, $ray2); return array_combine($keys, $vals); }