{
"books": [
{
"id": 2331,
"image": "http://lol.org/flower.png",
"images": [
{
"256x144": "http://lol.org/bee.png",
"650x320": "http://lol.org/fly.png"
}
],
....
我有上面的json数据但我的问题是如何获取650x320数据。
$data = json_decode($jsondata,true);
$gg = sizeof($data['books']);
for($x=0;$x<$gg;$x++){
以下代码可以正常使用
$image = $data['books'][$x]['image'];
但如何在第二个json级别获取图像?我已经尝试过以下代码而没有运气。
$image = ($data->{'books'}->{'images'}->{'320x180'});
$image = $data['books']['images'][$x]['320x180'];
答案 0 :(得分:2)
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'));
答案 1 :(得分:1)
'books'
是一个对象数组,您需要使用数字索引选择一个对象。
$image = $data['books'][$insertIndexHere]['images'][$insertIndexHere]['320x180'];
基本上,您错过了第一个有效的代码[$x]
和'books'
之间的'images'
。
您可能需要一个遍历每本书的循环,然后是第二个嵌套循环,它循环遍历每本书中的图像。
例如:
$gg = sizeof($data['books']);
for($x=0;$x<$gg;$x++) {
$images = data['books'][$x]['images'];
$sizeOfImages = sizeof($images);
for($j = 0; $j < $sizeOfImages; $j++) {
// access $images[$j]['320x180']
}
}