2013-10-03 4 views
0

Я попытался использовать PHP-декодирование для синтаксического анализа строки JSON ниже в массив, чтобы я мог извлечь текущий и день для обоих каналов из файла.Проблема с массивом JSON для PHP

мой файл JSON owl_output.json выглядит ..

{"channels":{"0":[{"current":1288,"units":"w"},{"day":31278.57,"units":"wh"}],"1": [{"current":660,"units":"w"},{"day":9191.11,"units":"wh"}]}} 

I'am только когда-либо получить один результат отображается код PHP, мне удалось получить работу ниже

<?php 
$string = file_get_contents('owl_output.json'); 
$data = json_decode($string,true); 
print_r($json); 
foreach ($data['channels']['0'] as $data) 
{ 
    echo $data ['current']; 
} 
?> 

Этом только отображает ток для канала 0. Если я пытаюсь добавить дополнительные поля, он не отображает

echo $ data ['current'] ['day']; (не работает)

Может кто-нибудь посоветует, как я могу отображать текущий и день для обоих каналов 0 & 1?

Моя цель - показать это на странице html в конце и продолжить опрос json-файла?

массив отображается ниже

Array 
(
    [channels] => Array 
     (
      [0] => Array 
       (
        [0] => Array 
         (
          [current] => 1288 
          [units] => w 
         ) 

        [1] => Array 
         (
          [day] => 31278.57 
          [units] => wh 
         ) 

       ) 

      [1] => Array 
       (
        [0] => Array 
         (
          [current] => 660 
          [units] => w 
         ) 

        [1] => Array 
         (
          [day] => 9191.11 
          [units] => wh 
         ) 

       ) 

     ) 

) 

Может кто-нибудь предложить любую помощь с этим?

Благодаря

+0

Вы должны перебираем '$ данных [ 'каналов']', а не '$ данных [ 'Каналы'] [0]'. –

ответ

0

Конфликт на $data ссылки в петлевых и плохих индексов массива:

foreach ($data['channels'] as $channel) 
{ 
    echo $channel[0]['current']; 
    echo $channel[1]['day']; 
} 
+0

Это сработало, однако я хотел бы отобразить все результаты по новой строке для каждого результата. В настоящее время это отображается на экране как одна длинная линия. – user2843830

+0

Если вы используете вывод html, используйте теги для формирования, как '
', если вывод находится в необработанном тексте, используйте '' \ n "' для перехода к новой строке. – Koryonik

+0

еще раз спасибо, что сработало. Если бы я захотел опросить файл owl_output.js. где должен идти вызов в коде? "; эхо "День". $ Канал [1] [ 'день']. "
"; } setInterval (функция() {$ .getJSON ("тест/owl_output.js", функция (данные) {// обновить представление с вашими новыми данными }); }, 5000); } ?> – user2843830

0
foreach ($data['channels'] as $chanel) 
{ 
    echo $chanel[0]['current']; 
    echo $chanel[1]['day']; 
} 
1

переменные $ данные противоречивы:

Используется для хранения данных, а также используемое в цикле Еогеаспа. Переименовать переменную $ данных в Еогеасп, например:

<?php 
$string = file_get_contents('owl_output.json'); 
$data = json_decode($string,true); 
print_r($json); 
foreach ($data['channels'] as $channel) 
{ 
    echo $channel[0]['current']; 
    echo $channel[1]['day']; 
} 
?> 

я редактировать, так как там была другая ошибка, потому что нет «ток» в каждой записи.

Смежные вопросы