用php解析多级json数据
我有如上所述的json数据,但我的问题是如何取出650x320数据用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:
{
"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 aprint\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'));