【问题标题】:Run a php foreach loop on multi-dimensional array在多维数组上运行 php foreach 循环
【发布时间】:2016-10-17 04:51:23
【问题描述】:

我需要在多维数组上运行 foreach 脚本。

原始 JSON 格式如下:

{
    "_links":{

    },
    "chatter_count":15,
    "chatters":{
        "moderators":[
            "moderator1",
            "moderator2",
            "moderator3"
        ],
        "staff":[
            "staff1",
            "staff2",
            "staff3"
        ],
        "admins":[
            "admin1",
            "admin2",
            "admin3"
        ],
        "global_mods":[
            "global_mod1",
            "global_mod2",
            "global_mod3"
        ],
        "viewers":[
            "viewer1",
            "viewer2",
            "viewer3"
        ]
    }
}

在运行 json_decode 以获得 PHP 数据结构后,我现在不知道如何运行 foreach 循环以输出如下内容:

chatter_count: 15 

moderators:
moderator1
moderator2
moderator3

staff:
staff1
staff2
staff3

admins:
admin1
admin2
admin3

global_mods:
global_mod1
global_mod2
global_mod3

viewers:
viewer1
viewer2
viewer3

【问题讨论】:

  • 到目前为止你有什么尝试?

标签: php arrays loops foreach


【解决方案1】:

先将json解码为数组,然后利用$key打印数组:

<?php

$testobj = json_decode(file_get_contents('https://tmi.twitch.tv/group/user/sodapoppin/chatters'), true);

echo "chatter_count:".$testobj['chatter_count']."\n";

foreach($testobj['chatters'] as $key => $chatter){
    echo "\n$key:\n";
    foreach ($chatter as $value) {
        echo "$value\n";
    }
}

输出:

我从你提供的 URL 中得到类似的东西:

chatter_count:5461

moderators:
emilydk
fyzicul
hnl
hnlbot
ngmack
nixi93
psychostatik
sodapoppin
staystrong420
sxyhxy
tastyphone

staff:
evoli
pluto
...
...
...

【讨论】:

    【解决方案2】:

    你只是落后于你想要完成的事情。要获取chatter_count,请使用$testobj -&gt;chatter_count。然后循环通过您的chatters 数组使用foreach($testobj-&gt;chatters as $key =&gt; $value) { // write your logic here }。这样你就可以得到你想要完成的事情。我可以在此处粘贴代码,但我希望您先尝试一下。希望你现在得到你的提示。

    【讨论】:

      【解决方案3】:

      PHP

      $data = json_decode($json, true);
      echo "chatter_count: " . $data["chatter_count"] . "\n";
      foreach($data['chatters'] as $chattersK=> $chatters) {
        echo $chattersK . ":\n";
        foreach($chatters as $chatterK => $chatters) {
           echo $chatters . "\n";
        }
        echo "\n";
      }
      

      演示:Eval.in

      【讨论】:

        【解决方案4】:

        试试这个代码。
        你必须添加一些打印样式。

        $testobj = json_decode(file_get_contents("https://tmi.twitch.tv/group/user/sodapoppin/chatters"));
        print("chatter_count:", $testobj->chatter_count);
        
        foreach ( $testobj->chatters as $key=>$chatter )  
        {  
        print $key;  
        foreach($chatter as $values){  
        printf("%s\n", $values);  
         }  
        

        }

        希望对你有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-30
          • 2010-10-24
          • 2015-06-02
          • 1970-01-01
          • 2014-12-29
          • 2012-04-06
          相关资源
          最近更新 更多