我有一个JSON与许多结果包含在各种"对象",这也是一个相关的图像。
"image":[
{
"#text":"http:'/'/BLAHBLAH",
"size":"small"
},
{
"#text":"http:'/'/BLAHBLAH",
"size":"medium"
},
{
"#text":"http:'/'/BLAHBLAH",
"size":"large"
}
]
$image = array_reduce($track['image'], function ($image, array $i) {
return $image ?: ($i['size'] == 'medium' ? $i['#text'] : null);
});
我得到了媒体图像URL,虽然当我做echo $image
时,我得到了循环中第一个结果的图像(按时间顺序)(所以JSON底部)
我如何获得最新的(按时间顺序)而不是(JSON顶部的第一个结果)?
编辑:这里是整个代码。以下是链接(您可以在右下角看到相关部分)
据我所知,您要的是第一个size == medium的
这里有一个函数可以为您获取它。
function getTextForSize($array, $size = "medium") {
foreach($array as $v){
if ($v["size"] == $size){
return $v["#text"];
}
}
}
使用
$text = getTextForSize($track["image"], "medium");
如果您想要不同大小的图像,请更改第二个参数。
如果你已经使用了数组的reduce方法,那么试试这个
$image = array_reduce($track['image'], function ($image, array $i) {
return $image.((!$image) && $i['size'] == 'medium' ? $i['#text'] : null);
}
);
如果您只在第一个元素之后,可以简单地执行此操作。
$track['image'][0]
如果你想要文本你可以说
$track['image'][0]['#text'];
的大小为
$track['image'][0]['size'];