仅删除另一个数组中不存在的那些键

时间:2011-07-02 04:15:51

标签: php

我有2个阵列

$arr1 = array(
  'a' => array(some values here),
  'b' => array(some more values here),
  'c' => array(some more and more values here)
);

$arr2 = array('a','c');

你可以看到$ arr2有2个值(a,c)

我想将这些键保存在$ arr1中,其值存在于$ arr1中(维护键值关联),并希望删除$ arr2中不存在的所有其他值

所以,输出将是

$arr1 = array(
  'a' => array(some values here),
  'c' => array(some more and more values here)
);

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

要重新改写一下,您希望找到两个数组中存在的键,并保留第一个数组中的值。这恰好是array_intersect_key的作用:

$arr1 = array_intersect_key($arr1, $arr2)

注意:我没有经常使用这个功能;您可能需要将您的第二个数组更改为:

$arr2 = array('a' => 1, 'c' => 1);

确保将它们视为键而不是值。

加入deceze的提示,你也可以

$arr1 = array_intersect_key($arr1, array_flip($arr2))

不需要更改第二个数组。