我有以下两个数组:
// array1
Array (
[key1] => value1,
[key2] => value2,
[key3] => value3,
[key4] => value4,
[key5] => value5
)
// array2
Array (
[0] => key1,
[1] => key3,
[2] => key5
)
我想构建一个仅包含array1
元素的新数组,其中键以值的形式出现在array2
中,因此具有以下内容:
// new array
Array (
[key1] => value1,
[key3] => value3,
[key5] => value5
)
如何做到这一点(也许使用类似数组交集的东西)?
答案 0 :(得分:2)
您可以使用array_intersect_key
和array_flip
。参见此working demo。
$a = [
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
'key4' => 'value4',
'key5' => 'value5',
];
$b = ['key1', 'key3', 'key5'];
$c = array_intersect_key($a, array_flip($b));
print_r($c);
答案 1 :(得分:0)
颠倒$array2
,使值成为键,反之亦然。之后,使用array_intersect_key
获取通用密钥。
$reverseArray = array_flip($array2);
var_dump(array_intersect_key($array1, $reverseArray));
有关更多信息,请搜索此link。