我想创建一个新的关联数组,其中包含来自两个数组的相应值,其中每个数组的键匹配。
例如:
// 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()
那么简单。请注意,数组的长度不一定相同。
答案 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
也是个好主意。