【问题标题】:Trouble With PHP and Nested ArraysPHP 和嵌套数组的问题
【发布时间】:2012-08-02 18:15:33
【问题描述】:

我很难使用 json_decode() 处理嵌套数组。我正在尝试获取团队名称列表。

这是实际的数组:http://pastebin.com/eMqMcucN

如果您查看阵列,则有三支球队。第一个团队包含我不需要且不完整的数据(但我能够获得团队名称)。它是团队拥有完整数据的嵌套数组,这让我很着迷。我想得到的是另外两个团队名称并忽略第一个团队,因为它没有嵌套数组,也没有真正的细节。但是,我可以毫无问题地获得第一个团队名称,因为它不是嵌套的。

任何帮助/指导将不胜感激。这是我目前在上面的数组上使用的。

“echo 'name: ' .$sd->name;”这一行引发“警告:为 foreach() 提供的参数无效”的错误。我尝试了变化,但没有运气。

$obj=json_decode($json);
$data = $obj->fantasy_content->users->{'0'}->user[1]->teams;
$userguid = $obj->fantasy_content->users->{'0'}->user->{'0'};

echo '<pre>'; 
foreach($data as $d){

    $subdata = $d->team;

    foreach($subdata as $sd){
        echo 'name: ' .  $sd->name; //this line errors
    }
 }

【问题讨论】:

    标签: php arrays foreach nested json


    【解决方案1】:

    你应该更深两层,在team下面还有另一个数组,只有这个数组包含name的数组:

    [team] => Array
                    (
                        [0] => Array (
                           [0] => stdClass Object
                                (
                                    [team_key] => 273.l.73856.t.9
                                )
    
                           [1] => stdClass Object
                                (
                                    [team_id] => 9
                                )
    
                           [2] => stdClass Object
                           (
                                [name] => Team API
                           )
                           ...
                        )
                    )
    

    【讨论】:

    • 谢谢。我认为这是我遇到困难的地方。我在想我需要走这条线... $subdata = $d->team;还有一些如何进一步钻探。但是,接下来的两个级别似乎没有可钻的钩子,因为它们只是 [0]、[1],然后进入 [0]、[1]、[2] 等……每个队。这有意义吗?
    • 是的,您需要使用 foreach 迭代内部数组 - 我看不到任何解决方法(除非您开始使用类和对象!)。
    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多