Объединить два массива как пары ключ-значение в PHP - PullRequest
26 голосов
/ 02 октября 2008

У меня есть два массива одинакового размера. Я хотел бы объединить два, так что значения одного - это ключевые индексы нового массива, а значения нового массива - это значения другого.

Сейчас я просто перебираю массивы и создаю новый массив вручную, но у меня есть ощущение, что есть гораздо более элегантный способ сделать это. Я не вижу функций массива для этой цели, но, может быть, я что-то пропустил? Есть ли простой способ для этого в этом направлении?

$mapped_array = mapkeys($array_with_keys, $array_with_values);

Ответы [ 3 ]

60 голосов
/ 02 октября 2008

См. array_combine() на PHP.net.

11 голосов
/ 02 октября 2008

(из документов для удобства чтения)

array_combine - создает массив, используя один массив для ключей и другой для его значений

Описание

array array_combine ( array $keys , array $values )

Создает массив, используя значения из массива ключей в качестве ключей и значения из массива значений в качестве соответствующих значений.

Параметры

keys - Массив используемых ключей. Недопустимые значения для ключа будут преобразованы в строку.

values ​​- Массив значений, которые будут использоваться

* ** 1 022 тысяча двадцать-один * Пример
<?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
)
4 голосов
/ 17 декабря 2009

Это должно сработать

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...