PHP中的键名称的项目关联数组

时间:2010-11-05 18:36:54

标签: php associative-array

是否有任何php函数执行此操作:

$source = array('id1'=>'name', 'id2'=>'name2', 'id3'=>'name3');

$keys = array('id1', 'id3');

$projection = project($source, $keys);

我想:

$projection = array('name', 'name3');

我长时间搜索标准数组函数,但找不到任何东西。

2 个答案:

答案 0 :(得分:2)

看起来我应该更加努力 - 诀窍就是使用这个功能:

$projection = array_intersect_key($source, array_flip($keys))

然而,它很难看,因为你需要做一个array_flip。

答案 1 :(得分:0)

不是这样的。你可以使用以下方法更接近你想要做的事情:

$projection = array_values(array_replace(array_flip($keys),$source));

或者:

$projection = array_values(array_intersect_key(array_flip($keys),$source));

但是,如果给定项目在键阵列中出现两次,则无法使用。

如果您可以访问PHP 5.3,则可以使用闭包:

$projection = array_map(
  function($key) use (&$source) { return $source[$key]; }, $keys
);