我有两个阵列
$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)
);
我怎样才能做到这一点?
要重新表述一点,您需要找到两个数组中都存在的键,并保留第一个数组中的值。这恰好是array_intersect_key
所做的:
$arr1 = array_intersect_key($arr1, $arr2)
注意:我不经常使用这个功能;您可能需要将第二个数组更改为类似
$arr2 = array('a' => 1, 'c' => 1);
以确保它们被视为键而非值。
结合欺骗的提示,你也可以做
$arr1 = array_intersect_key($arr1, array_flip($arr2))
这不需要更改第二个数组。