php匹配2个数组:键值存储数组值

时间:2014-06-03 16:21:40

标签: php arrays

$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);

我不想使用循环。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

这可以使用array_intersect_keyhttp://uk3.php.net/manual/en/function.array-intersect-key.php)和array_fliphttp://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 )