PHP:根据匹配的键从两个数组中的值创建一个数组

时间:2014-02-12 19:52:24

标签: php arrays

问题

我想创建一个新的关联数组,其中包含来自两个数组的相应值,其中每个数组的键匹配。

例如:

// first (data) array:
["key1" => "value 1", "key2" => "value 2", "key3" => "value 3"];

// second (map) array:
["key1" => "map1", "key3" => "map3"];

// resulting (combined) array:
["map1" => "value 1", "map3" => "value 3"];

我尝试过什么

$combined = array();
foreach ($data as $key => $value) {
    if (array_key_exists($key, $map)) {
        $combined[$map[$key]] = $value;
    }
}

问题

有没有办法使用本机PHP函数执行此操作?理想情况下,它不会比上面的代码更复杂......

此问题与Combining arrays based on keys from another array类似。但不确切。

它也不像使用array_merge()和/或array_combine()那么简单。请注意,数组的长度不一定相同。

1 个答案:

答案 0 :(得分:3)

您可以使用array_intersect_key()http://ca2.php.net/manual/en/function.array-intersect-key.php)。 这样的事情:

$int = array_intersect_key($map, $data);
$combined = array_combine(array_values($map), array_values($int));

ksort() $map$data也是个好主意。