Обработка многомерного массива JSON с помощью PHP

Это json, который возвращает deepbit.net для моего работника Mining Mining. Я пытаюсь получить доступ к массиву работников и выполнить цикл, чтобы распечатать статистику для моего работника myemail@gmail.com. Я могу получить доступ к файлам confirm_reward, hashrate, ipa и payout_history, но у меня возникли проблемы с форматированием и выводом массива рабочих.

{ "confirmed_reward":0.11895358, "hashrate":236.66666667, "ipa":true, "payout_history":0.6, "workers": { "myemail@gmail.com": { "alive":false, "shares":20044, "stales":51 } } } 

Спасибо за помощь 🙂

Я предполагаю, что вы расшифровали строку, которую вы дали с помощью метода json_decode , например …

 $data = json_decode($json_string, TRUE); 

Чтобы получить доступ к статистике для конкретного работника, просто используйте …

 $worker_stats = $data['workers']['myemail@gmail.com']; 

Чтобы проверить, жив ли он, например, вы идете с …

 $is_alive = $worker_stats['alive']; 

Это действительно так просто. )

Почему бы вам не использовать json_decode .

Вы передаете строку, и она возвращает объект / массив, который вы будете использовать легко, чем строка напрямую.

Точнее:

 <?php $aJson = json_decode('{"confirmed_reward":0.11895358,"hashrate":236.66666667,"ipa":true,"payout_history":0.6,"workers":{"myemail@gmail.com":{"alive":false,"shares":20044,"stales":51}}}'); $aJson['workers']['myemail@gmail.com']; // here's what you want! ?> 
 $result = json_decode($json, true); // true to return associative arrays // instead of objects var_dump($result['workers']['myemail@gmail.com']); 

Вы можете использовать json_decode для получения ассоциативного массива из строки JSON.

В вашем примере это будет выглядеть примерно так:

 $json = 'get yo JSON'; $array = json_decode($json, true); // The `true` says to parse the JSON into an array, // instead of an object. foreach($array['workers']['myemail@gmail.com'] as $stat => $value) { // Do what you want with the stats echo "$stat: $value<br>"; }