对数组内部返回的值执行foreach


Perform foreach on values returned inside array

我不确定这个问题的措辞是否正确,但基本上我从我试图处理的WordPress中得到了以下数组结果:

Array
(
    [0] => WP_User Object
        (
            [data] => stdClass Object
                (
                    [ID] => 3
                    [user_login] => Jean Gomes
                    [user_pass] => $P$BvW6LK9/blGKLuSj.9spNPW3.v104..
                    [user_nicename] => jean-gomes
                    [user_email] => jean.gomes@dpa.dev
                    [user_url] => 
                    [user_registered] => 2014-08-28 10:56:39
                    [user_activation_key] => 
                    [user_status] => 0
                    [display_name] => Jean Gomes
                )
            [ID] => 3
            [caps] => Array
                (
                    [author] => 1
                )
            [cap_key] => dpa2335327_capabilities
            [roles] => Array
                (
                    [0] => author
                )
            [allcaps] => Array
                (
                    [upload_files] => 1
                    [edit_posts] => 1
                    [edit_published_posts] => 1
                    [publish_posts] => 1
                    [read] => 1
                    [level_2] => 1
                    [level_1] => 1
                    [level_0] => 1
                    [delete_posts] => 1
                    [delete_published_posts] => 1
                    [wpseo_bulk_edit] => 1
                    [author] => 1
                )
            [filter] => 
        )
    [1] => WP_User Object
        (
            [data] => stdClass Object
                (
                    [ID] => 4
                    [user_login] => Tammy Day
                    [user_pass] => $P$BejydpFxKDp60WruV71u0/JnJm9o.E.
                    [user_nicename] => tammy-day
                    [user_email] => tammy.day@dpa.dev
                    [user_url] => 
                    [user_registered] => 2014-08-28 10:57:23
                    [user_activation_key] => 
                    [user_status] => 0
                    [display_name] => Tammy Day
                )
            [ID] => 4
            [caps] => Array
                (
                    [author] => 1
                )

etc

我想使用这些结果为ID执行foreach

例如

foreach ( $authors as $author_id ) {

但我不知道如何访问ID。我尝试过:

foreach ( $authors->ID as $author_id ) {

但很明显,这是行不通的,因为在这之前有一个数字,有没有一个等价的:

foreach ( $authors['X']->ID as $author_id ) {

我可以用的?

对不起,我知道这可能是一个愚蠢的问题,但我被卡住了。我知道我可能必须在foreach中做foreach,但我根本无法计算出语法。

foreach (array_expression as $value)

在每次迭代中,当前元素的值被分配给$value,内部数组指针被提前一个(因此在下一次迭代中,您将看到下一个元素)。

阅读此文档页面了解有关foreach循环的更多详细信息:

在您的情况下,$value将指向WP_User Object的实例。要访问用户的id,只需读取对象的属性ID

foreach ( $authors as $author ) {
    $author_id = $author->ID;
}

你不能用这个代替foreach:

$i=0;
while ($i<count($authors)){
$author_id = $authors[$i]['data']['id'];
//Do whatever you want here.
$i=$i+1;
}

作为转储状态,数组元素是WP_User的实例。您可以使用以下循环来获取ID:

foreach ($authors as $User) {
    $author_id = $User->ID;
    // Act
}

有关WP_User类的引用,请参见http://codex.wordpress.org/Class_Reference/WP_User