如何从PHP中的json_decode访问嵌套数组?

问题描述:

我已经花了几个小时在这里,并且我在这里读了很多关于stackoverflow的答案,但没有一个有帮助.

I have spent hours at this and I've read loads of answers here on stackoverflow and none have helped.

到目前为止,我只能为该示例打印集市广场-克利夫登.

All I've been able to do so far is to print Market Square - Clifden for this example.

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

我不知道如何访问嵌套在图像"中的名称",因此可以获得 market_square_clifden.jpg .

I can't figure out how to access "name" nested inside "image" so I can get 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)""
                }
            }
        }
    }

正如评论者所述,请修正您的变量格式-这样有助于更快地获得答案.

As the commenters mentioned, please fix your variable formatting - it helps get answers more quickly.

假设您使用默认的json_decode设置,则每个JSON对象将成为一个PHP对象. (请参阅php.net上的json_decode文档.)

Assuming you are using default json_decode settings, each JSON object will become a PHP object. (See the json_decode documentation at php.net.)

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

如果您将所有内容强制为关联数组:

If you force everything to be associative arrays:

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