Я полностью ноб с json.
Мне нужно разобрать json, который возвращает результат следующим образом:
"response":{ "status":1, "data":{ "16":{ "Offer":{ "id":"16", "advertiser_id":null, "name":"My Offer", "description":null, "require_approval":"0", "require_terms_and_conditions":0, "terms_and_conditions":null, "offer_url":"http://", "preview_url":"http://", } }, "17":{ "Offer":{ "id":"17", "advertiser_id":null, "name":"My Other Offer", "description":null, "require_approval":"0", "require_terms_and_conditions":0, "terms_and_conditions":null, "offer_url":"http://", "preview_url":"http://", } }, }, "errors":[] }
Мне нужно получить доступ ко всем названиям предложений, но я не могу получить доступ к этому:
$url = "jsonurl"; $string = file_get_contents($url); $json_a=json_decode($string,true); foreach ($json_a['data']['offer'] as $offer_a) { echo $offer_a[name]; }
Что я делаю неправильно?
Спасибо всем заранее.
Кажется, вы пропускаете 16
. Но это легко отлаживается, делая это.
echo '<pre>'; print_r($json_a); die();
Это отобразит дерево в массиве / объекте. В этом случае массив.
Но я думаю, это сработает:
foreach ($json_a['response']['data']['16']['Offer'] as $offer_a) { echo $offer_a['name']; }
Если вам нужны все имена предложений:
foreach ($json_a['response']['data'] as $offer){ echo $offer['Offer']['name']; }