给定一个关联的数组,我想删除除第二个数组之外的所有元素。例如,请考虑以下内容。是的,我可以遍历任何一个阵列并实现这一点,但是,我必须相信有一种更清洁的方式。感谢
<?php
$array1 = array('a'=>'a','b'=>'b','c'=>'c','d' =>'d','e' =>'e');
$array2 = array('a','c','e');
//Desire array('a'=>'a','c'=>'c','e' =>'e');
//This obviously doesn't work, but am thinking there might be something similar
var_dump(array_intersect_key($array1, $array2));
?>
答案 0 :(得分:6)
var_dump(array_intersect_key($array1, array_flip($array2)));
几乎就在那里。你需要翻转最后一个数组
答案 1 :(得分:2)
这是使用array_filter()
的单向方式。它使用回调来查看密钥是否在有效密钥数组中。如果是这样,则回调返回true。请注意标记ARRAY_FILTER_USE_KEY
,它告诉array_filter()
将密钥传递给回调而不是值。
$array = array_filter($array1, function($key) use ($array2) {
return in_array($key, $array2);
}, ARRAY_FILTER_USE_KEY);
编辑:这仅适用于PHP 5.6+,作为该语言新增内容中array_filter()
的第三个参数。