Как получить доступ к вложенным массивам из json_decode в PHP?

Я потратил на это несколько часов, и я прочитал множество ответов здесь, в stackoverflow, и ни один из них не помог.

Все, что я смог сделать до сих пор, это напечатать Market Square – Clifden для этого примера.

$obj = json_decode($data); $obj = $obj[0]; print $obj->{'title'}; 

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

Я был бы благодарен за некоторых указателей.

 array(1){ [0]=>array(12){ ["_id"]=>array(1){ ["$oid"]=>string(24)"51f674e4e4b0066cc8197033" } ["display"]=>int(1) ["title"]=>string(23)"Market Square - Clifden" ["class"]=>string(21)"market_square_clifden" ["icon"]=>string(16)"camera_small.png" ["image"]=>array(4){ ["name"]=>string(25)"market_square_clifden.jpg" ["top"]=>string(16)"7.98958587646484" ["left"]=>string(18)"397.98614501953125" ["maxwidth"]=>string(16)"599.777777671814" } ["locs"]=>array(2){ ["lng"]=>float(-10.022516) ["lat"]=>float(53.488111) } ["pov"]=>array(3){ ["heading"]=>string(17)"-14.1950626239811" ["pitch"]=>string(18)"-6.368221166504443" ["zoom"]=>string(18)"0.8399999999999999" } ["photo"]=>array(3){ ["takenby"]=>string(13)"Robert French" ["sentinby"]=>string(34)"The Lawrence Photograph Collection" ["description"]=>string(263)"Clifden (Irish: An Clochán, meaning 'stepping stones' is a town on the coast of County Galway, Ireland and being Connemara's largest town, it is often referred to as 'the Capital of Connemara'. It is located on the Owenglen River where it flows into Clifden Bay." } ["date"]=>array(2){ ["posted"]=>string(53)"Mon Jul 29 2013 14:53:53 GMT+0100 (GMT Daylight Time)" ["circa"]=>string(9)"1880-1900" } ["comments"]=>array(1){ [0]=>array(2){ ["poster"]=>string(0)"" ["comment"]=>string(0)"" } } ["tags"]=>array(1){ [0]=>array(2){ ["name"]=>string(0)"" ["slug"]=>string(0)"" } } } } 

Как отмечали комментаторы, исправьте переменное форматирование – это поможет быстрее получить ответы.

Предполагая, что вы используете настройки json_decode умолчанию, каждый объект JSON станет объектом PHP. (См. Документацию json_decode на php.net.)

 $obj = json_decode($data); $obj = $obj[0]; // title attribute $obj->title // image object $obj->image // image name $obj->image->name 

Если вы заставляете все быть ассоциативными массивами:

 $obj = json_decode($data,true); $obj = $obj[0]; // title attribute $obj['title'] // image object $obj['image'] // image name $obj['image']['name'] 

Вы можете получить его, используя следующий код. Вы можете рассматривать все массивы как словари или связанные с ними массивы в php. Либо они индексируются по номерам (обычный массив), либо индексируются с помощью ключей (связанных массивов).

 $obj[0]["image"]["name"] 

В случае вложенных массивов, когда вы обращаетесь к внутреннему массиву, вы можете рассматривать это как массив. Подумайте об этом так:

 $innerArray = $obj[0]; // The image key gives us an array as well. $image = $innerArray["image"]; // Now we have the dictionary where the name is $name = $image["name"];