给定两个数组,如何构建仅包含一个数组中的键的键作为值出现在第二个数组中的新数组?

时间:2018-07-16 02:06:27

标签: php arrays array-intersect

我有以下两个数组:

// 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
)

如何做到这一点(也许使用类似数组交集的东西)?

2 个答案:

答案 0 :(得分:2)

您可以使用array_intersect_keyarray_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