Мне нужно запустить сценарий 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
Сначала декодируем 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); }
}
Надеюсь, это поможет вам.