是否有任何php函数执行此操作:
$source = array('id1'=>'name', 'id2'=>'name2', 'id3'=>'name3');
$keys = array('id1', 'id3');
$projection = project($source, $keys);
我想:
$projection = array('name', 'name3');
我长时间搜索标准数组函数,但找不到任何东西。
答案 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
);