1

在 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?

4

1 回答 1

4

您可以尝试使用array_map而不是foreach

$user_ids = array_map(function($obj){ return $obj->user_id; }, $array);

注意:这个例子至少需要PHP 5.3,因为它是用匿名函数实现的。


如基准所示,本机foreach-loop. array_map它更有效,因为它是一种母语结构。如果忽略这一事实,其他循环构造 ( while, for) 或是array_map唯一的方法。


但是,如果您重建查询,在没有 php 处理的情况下执行它会更好。有很多功能,例如INNER JOIN,、LEFT JOIN子查询、循环和存储过程。它可能真的更快。

于 2013-07-29T10:44:29.170 回答