问题
我想用两个数组中的各个值创建一个新的关联数组,其中每个数组中的键都匹配.
例如:
// 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函数来做到这一点?理想情况下,不要比上面的代码更复杂……
它也不像使用array_merge()和/或array_combine()那样简单.注意,数组的长度不一定相等.
解决方法:
$int = array_intersect_key($map, $data);
$combined = array_combine(array_values($map), array_values($int));
同样,$map和$data都是ksort()的好主意.
标签:arrays,php
来源: https://codeday.me/bug/20191122/2057197.html