Запустите php foreach loop на многомерном массиве

Мне нужно запустить сценарий 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 

Related of "Запустите php foreach loop на многомерном массиве"

Сначала декодируем 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 ... ... ... 

Вы всего лишь немного отстаете от того, что вы пытаетесь выполнить. Чтобы получить chatter_count используйте $testobj ->chatter_count . И затем цикл через ваш массив chatters использует foreach($testobj->chatters as $key => $value) { // write your logic here } . Таким образом, вы можете получить то, что вы пытаетесь выполнить. Я могу вставить код здесь, но я бы хотел, чтобы вы сначала попробовали. Надеюсь, ты получишь подсказки.

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

Попробуйте этот код.
И вы должны добавить стиль для печати.

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

}

Надеюсь, это поможет вам.