2016-10-17 79 views
1

我需要在多维数组上运行一个foreach脚本。在多维数组上运行一个php 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 
+1

你到目前为止尝试过什么? –

回答

3

首先解码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"; 
    } 
} 

输出:

我从你给的网址是这样的:

chatter_count:5461 

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

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

你只是少数落后一步你要完成的任务。要获得chatter_count请使用$testobj ->chatter_count。然后循环使用您的chatters阵列。这样你就可以得到你想要完成的事情。我可以在这里粘贴代码,但我希望你先试一试。希望你现在得到你的提示。

0

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

0

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

$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); 
} 

}

希望这可以帮助你。