2017-01-11 8 views
-2

Почему этот код работает неправильно или что я делаю неправильно?PHP echo json с ключом

$json = json_encode($myInstance->getData($id)); 
    $result = json_decode($json,true); 
    $i = 0; 
    foreach ($result as $value) { 
     echo '<div>'.$value[$i]['name'].'</div>'; 
     $i++; 
    } 

Первое значение показано правильно, но оно не перебирается! Есть $value[$i]['name'] не построить для итерации ?? Он печатает только array[0], а не array[1]. Благодарю.

+2

В этом вопросе недостаточно информации, чтобы мы могли вам помочь. Пожалуйста, разместите образец JSON. –

+0

Трудно сказать, в чем проблема, не связанная с JSON. Также поможет дополнительная информация о '$ myInstance', в частности о методе' getData'. –

+0

Поскольку он работает с корреляцией, когда я объявляю $ i = 1, отображается правильная запись массива [1] ['name']. Записи json на данный момент не имеют значения. Проблема сосредоточена на $ value [$ i] - почему она не перебирается? Это должно или я неправ? – Tobias

ответ

1

Вам будет лучше использовать вложенные петли foreach, а не вообще отличную практику кодирования, но она выполнит задание, которое вы пытаетесь сделать.

$json = json_encode($myInstance->getData($id)); 
$result = json_decode($json,true); 

foreach ($result as $value) { 
    foreach($value as $value_detail) { 
     echo '<div>'.$value_detail['name'].'</div>'; 
    } 
} 

Ваш код будет перебрать все из первых пунктов уровня в вашем JSON и отображать имя от первого элемента, второго названия из второго пункта, третьего из третьего пункта, и т.д.

Проблема, с которой вы сталкиваетесь, может быть связана с тем, что массив $json является 3D, например

[0 => 
    [ 
    ['name' => 'Foo'], ['name' => 'Bar'] 
    ] 
] 

Если это так, то вы можете обнаружить, что цикл по каждому элементу может быть

foreach($result[0] as $value) { 
    echo '<div>'.$value['name'].'</div>'; 
} 

Попробуйте var_dump($result);, чтобы увидеть то, что выглядит как данные.

+0

Thats it awesome d3v_1! Я просто не знаю, почему в этот момент нужен вложенный цикл. Я принимаю ваш ответ как можно скорее. THX много :) – Tobias

+0

Данные в $ json могут быть трехмерным массивом с ключом нуля. Я отредактирую свой ответ, чтобы объяснить. –

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

  • Нет связанных вопросов^_^