2012-02-27 7 views
6

Это json, который возвращает deepbit.net для моего работника Mining Mining. Я пытаюсь получить доступ к массиву работников и выполнить цикл, чтобы распечатать статистику для моего работника [email protected] Я могу получить доступ к файлам confirm_reward, hashrate, ipa и payout_history, но у меня возникли проблемы с форматированием и выводом массива рабочих.Обработка многомерного массива JSON с помощью PHP

{ 
"confirmed_reward":0.11895358, 
"hashrate":236.66666667, 
"ipa":true, 
"payout_history":0.6, 
"workers": 
    { 
     "[email protected]": 
     { 
     "alive":false, 
     "shares":20044, 
     "stales":51 
     } 
    } 
} 

Спасибо за вашу помощь :)

ответ

15

Я предполагаю, что вы расшифровали строку, которую вы дали с json_decode способом, как ...

$data = json_decode($json_string, TRUE); 

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

$worker_stats = $data['workers']['[email protected]']; 

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

$is_alive = $worker_stats['alive']; 

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

3

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

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

Чтобы быть более точным:

<?php 
$aJson = json_decode('{"confirmed_reward":0.11895358,"hashrate":236.66666667,"ipa":true,"payout_history":0.6,"workers":{"[email protected]":{"alive":false,"shares":20044,"stales":51}}}'); 
$aJson['workers']['[email protected]']; // here's what you want! 
?> 
2

Вы можете использовать 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']['[email protected]'] as $stat => $value) { 
    // Do what you want with the stats 
    echo "$stat: $value<br>"; 
}