我在工作中多次遇到过这种情况,需要从数组中获取具有特定键的子数组。今天我想让它变得更好,所以我的问题是哪个是更好的选择:
示例选项1:
$where_requires = array('group_id', 'name');
$item = array('group_id' => 2, 'name' => 'Bob', 'age' => 37);
$where = array_diff_key($item, array_diff_key($item, array_fill_keys($where_requires, '')));
示例选项2
$where = array();
foreach($where_requires as $require){
$where[$require] = $item[$require];
}
记住$ where和$ where_require都是一个大数组,大约有数百个元素。我机器的计时成本没有明显区别,你能给我一些建议吗?更好地解释原因。感谢所有注意到我的问题的人。
答案 0 :(得分:3)
尝试:
$where = array_intersect_key($item, array_flip($where_requires));