用php解析多级json数据

用php解析多级json数据,php,json,Php,Json,我有如上所述的json数据,但我的问题是如何取出650x320数据 { "books": [ { "id": 2331, "image": "http://lol.org/flower.png", "images": [ { "256x144": "http://lol.org/bee.png", "650x320": "http:

我有如上所述的json数据,但我的问题是如何取出650x320数据

    {
    "books": [
    {
      "id": 2331,
      "image": "http://lol.org/flower.png",
      "images": [
                 {
                  "256x144": "http://lol.org/bee.png",
                  "650x320": "http://lol.org/fly.png"
                  }
                 ],

....
但是如何在第二个json级别获取图像呢?我尝试了下面的代码,但没有成功

  $image = $data['books'][$x]['image'];

'books'
是一个对象数组,您需要使用数字索引选择一个对象

  $image = ($data->{'books'}->{'images'}->{'320x180'});

  $image = $data['books']['images'][$x]['320x180'];
基本上,您已经错过了第一个代码中的
[$x]
'books'
'images'
之间的
[$x]

您可能需要一个循环来遍历每本书,然后是第二个嵌套循环,它遍历每本书中的图像

例如:

$image = $data['books'][$insertIndexHere]['images'][$insertIndexHere]['320x180'];
$gg=sizeof($data['books']);

对于($x=0;$x
'books'
是一个对象数组,您需要使用数字索引选择一个对象

  $image = ($data->{'books'}->{'images'}->{'320x180'});

  $image = $data['books']['images'][$x]['320x180'];
基本上,您已经错过了第一个代码中的
[$x]
'books'
'images'
之间的
[$x]

您可能需要一个循环来遍历每本书,然后是第二个嵌套循环,它遍历每本书中的图像

例如:

$image = $data['books'][$insertIndexHere]['images'][$insertIndexHere]['320x180'];
$gg=sizeof($data['books']);

对于($x=0;$xDo a
print\r
of
$data
来查看PHP的数据结构,它是从JSON中获取的。$data['books'][0]['images'][0]['320x180];$image=$data['books'][$x]['images'][0]['320x180'];是的,这解决了我的问题。执行
print\r
of
$data
来查看从JSON中获取的PHP数据结构。$data['books'][0]['images'][0][“320x180”];$image=$data['books'][$x]['images'][0][“320x180”];是的,这解决了我的问题。
function getImageLinksFor($json, $dimension='650x320') {
    $links      =   array();
    $objJson    = json_decode($json);

    // GET THE MAIN BOOKS OBJECT...
    $books = $objJson->books;

    // LOOP THROUGH THE $books OBJECT AND PERFORM YOUR SEARCH FOR IMAGES
    foreach ($books as $obj) {
        // SINGLE OUT THE IMAGES OBJECT
        $images = $obj->images;
        // SINCE IT IS ALSO AN ARRAY, SIMPLY LOOP THROUGH IT AND FETCH THE DESIRED DIMENSION.
        foreach ($images as $key => $objImgData) {
            if(property_exists($objImgData, $dimension)){
                $links[] = $objImgData->$dimension;
            }
        }
    }
    if(count($links) == 1){
        return implode("", $links);
    }
    return $links;
}

var_dump(getImageLinksFor($json, '650x320'));