我有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)
);
我怎样才能做到这一点?
答案 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))
不需要更改第二个数组。