在WordPress中使用wpdb类查询数据库时,我经常得到一个数值对象数组:
array(
[0] => stdClass(
comment_ID = 3
comment_post_ID = 19
user_id = 7
)
[1] => stdClass(
comment_ID = 5
comment_post_ID = 19
user_id = 6
)
)
我需要使用user_id
执行第二次查询。要检索user_id
我使用foreach
循环,如:
$user_ids = array();
foreach($array as $object) {
$user_ids[] = $object->user_id;
}
我想知道是否有一种PHP本地更好的方法来检索user_id
并完全避免使用foreach?
答案 0 :(得分:4)
$user_ids = array_map(function($obj){ return $obj->user_id; }, $array);
注意:此示例至少需要PHP 5.3
,因为它是使用anonymous functions实现的。
正如基准测试所示,原生foreach
- 循环is faster而不是array_map
。它更有效率,因为它是一种本地语言结构。如果忽略这一事实,其他循环结构(while
,for
)或array_map
是唯一的方法。
但如果你重新构建你的查询,那么在没有php处理的情况下执行它会更好。有很多功能,如INNER JOIN
,LEFT JOIN
,子查询,循环和存储过程。它可能真的更快。