web-dev-qa-db-ja.com

PHPで2つの配列をキーと値のペアとしてマージします

同じサイズの配列が2つあります。 2つをマージして、1つの値が新しい配列のキーインデックスになり、新しい配列の値がもう1つの値になるようにしたいと思います。

現在、配列をループして手動で新しい配列を作成しているだけですが、これについてよりエレガントな方法があると感じています。この目的のための配列関数は見当たりませんが、何かを見逃しているのでしょうか?これらの線に沿ってこれを行う簡単な方法はありますか?

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

PHP.netの array_combine() を参照してください。

60
aib

(読みやすいドキュメントから)

array_combine — 1つの配列をキーに使用し、別の配列をその値に使用して配列を作成する

説明

array array_combine ( array $keys , array $values )

Keys配列の値をキーとして使用し、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
)
12

これでうまくいくはずです

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);
}
4
Mathias