#php #arrays #loops #foreach
#php #массивы #циклы #foreach
Вопрос:
Мне нужно запустить скрипт 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. Что вы пробовали до сих пор?
Ответ №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 "$valuen";
}
}
Вывод:
Я получаю что-то вроде этого из URL-адреса, который вы указали:
chatter_count:5461
moderators:
emilydk
fyzicul
hnl
hnlbot
ngmack
nixi93
psychostatik
sodapoppin
staystrong420
sxyhxy
tastyphone
staff:
evoli
pluto
...
...
...
Ответ №2:
Вы всего на несколько шагов отстаете от того, чего пытаетесь достичь. Чтобы chatter_count
использовать $testobj ->chatter_count
. А затем выполните цикл использования вашего chatters
массива foreach($testobj->chatters as $key => $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("%sn", $values);
}
}
Надеюсь, это вам поможет.