从关联中删除某些键。排列

时间:2014-02-06 12:05:37

标签: php arrays

我有两个数组:

$pool = array(
     'foo' => array('foobar1'),
     'bar' => array('foobar2'),
     'lou' => array('foobar3'),
     'zuu' => array('foobar4') 
);

$remove = array('lou', 'zuu');

我如何获得此阵列:

$result = array(
     'foo' => array('foobar1'),
     'bar' => array('foobar2')
);

我可以做一个foreach循环,但我喜欢像

这样更优雅的解决方案
$result = array_intersect_key( $pool, array_flip($remove) );

这给了我另一种方式:

array(
     'lou' => array('foobar3'),
     'zuu' => array('foobar4')
);

编辑:我的一行解决方案是:

array_intersect_key( $pool, array_flip( array_keys( array_diff_key( $pool, array_flip( $remove ) ) ) ) )

2 个答案:

答案 0 :(得分:3)

试试这个

 $pool = array(
     'foo' => array('foobar1'),
     'bar' => array('foobar2'),
     'lou' => array('foobar3'),
     'zuu' => array('foobar4') 
);

$remove = array('lou', 'zuu');
$compare=array_diff_key($pool, array_flip($remove));
var_dump(array_intersect_key($pool,$compare));

答案 1 :(得分:2)

使用未设置功能

unset($pool['lou']);