Запустите цикл php foreach для многомерного массива

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

}

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