$a = array('x' => 1, 'y' => 2, 'z' => 3, 'a' => 4, 'b' => 4);
$b = array('x', 'z', 'a');
我正在寻找一个NATIVE PHP函数,它将采用上面的2个数组并返回
array('x' => 1, 'z' => 3, 'a' => 4);
我不想使用循环。 任何帮助将不胜感激。
答案 0 :(得分:3)
这可以使用array_intersect_key
(http://uk3.php.net/manual/en/function.array-intersect-key.php)和array_flip
(http://uk3.php.net/manual/en/function.array-flip.php)来解决;
array_intersect_key($a, array_flip($b));
见这个例子; https://eval.in/158360
答案 1 :(得分:0)
array_intersect_key($a, array_fill_keys($b, 1));
有本机函数 array_intersect_key ,它使用键作为基数来计算多个数组的交集。但是你的第二个数组是我们需要键的值列表。所以我们可以使用函数 array_fill_keys ,它将第一个参数作为键列表,并创建一个由第二个参数指定的值填充的数组(例如,我们将取整数1):
$b = array('x', 'z', 'a');
$bValsToKeys = array_fill_keys($b, 1);
$ bValsToKeys将
Array ( [x] => 1 [z] => 1 [a] => 1 )
然后我们可以将它与$ a相交:
$result = array_intersect_key($a, $bValsToKeys);
print_r($result);
输出:
Array ( [x] => 1 [z] => 3 [a] => 4 )