【问题标题】:How do I loop through numbered indexes in a stdClass Object?如何循环遍历 stdClass 对象中的编号索引?
【发布时间】:2013-05-12 23:27:40
【问题描述】:

这是我试图访问的输出:

stdClass Object
    (
        [results] => stdClass Object
        (
            [columns] => stdClass Object
            (
                [name] => Name
                [id] => id
            )

            [data] => stdClass Object
            (
                [team] => Array
                (
                    [0] => stdClass Object
                    (
                        [name] => Kansas City
                        [id] => 47556332
                    )

                    [1] => stdClass Object
                    (
                        [name] => Chi White Sox
                        [id] => 03948575
                    )

                    [2] => stdClass Object
                    (
                        [name] => Detroit
                        [id] => 3747646625
                    )
               )    
            )
        )
    )
)

我正在尝试获取此 ID,但在访问 0+ 之后的任何内容时遇到了麻烦。我在这里有两个 foreach 循环,因为我需要遍历名称和 id 并将它们放在一个表中,但这样做没有问题。我只需要了解 [0] 内的任何内容。我如何引用那个 0?

foreach ($data->results->data->team as $team_data) {
    foreach ($team_data->THE ID/NUMBER->name as $team_id) {
        #code...
    }
}

当我执行上面的代码时,我得到了很多错误。我尝试了不同的方法并不断收到以下形式的错误:

Notice: Undefined property: stdClass::$0 in index.php on line 61 Notice: Trying to get property of non-object in index.php on line 61

此错误是由于尝试使用 $id 和 $id++ 来获取编号部分。我知道以前有人问过这个问题,但我需要通过多个数字而不仅仅是 0,因为显然

$team_data->{'0'}->name

只适用于一个,但即使尝试这样做我也会出错,我需要得到 0、1、2 等。

【问题讨论】:

    标签: php json foreach stdclass


    【解决方案1】:

    我认为您可能想多了解决方案..

    foreach ($data->results->data->team as $team_id => $team_data) {
        // $team_id holds the index of the teams array
        echo $team_id;  
        echo $team_data->name;
        echo $team_data->id;
    }
    

    【讨论】:

    • 哦,拍摄。我总是倾向于过度思考这样的事情。谢谢。
    • foreach ($array AS $key => $value) 所以 $key 是“编号部分”,$value 是它所包含的内容。
    【解决方案2】:

    $team_data 已经是其中包含 name 和 id 的对象。所以跳过第二个foreach,直接访问$team_data['id']和$team_data['name']

    【讨论】:

      猜你喜欢
      • 2014-06-18
      • 2015-10-24
      • 1970-01-01
      • 2014-01-31
      • 2012-07-03
      • 1970-01-01
      • 2013-04-23
      • 2014-02-22
      • 2012-06-17
      相关资源
      最近更新 更多