修改PHP数组以仅保留给定的键

时间:2014-10-22 17:41:12

标签: php arrays

给定一个关联的数组,我想删除除第二个数组之外的所有元素。例如,请考虑以下内容。是的,我可以遍历任何一个阵列并实现这一点,但是,我必须相信有一种更清洁的方式。感谢

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

?>

2 个答案:

答案 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()的第三个参数。