我有一个包含很多结果的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);
});
我得到了媒体图片网址,但是当我echo $image
时,我在循环中获得了第一个结果(按时间顺序排列)的图像(所以JSON的底部)
如何获取最新的(按时间顺序排列)(第一个结果位于JSON顶部)?
修改 Here是整个代码。 这是链接(您可以在右下角看到相关部分)。
答案 0 :(得分:2)
根据我的理解,你是第一个有尺寸==中等的
这是一个能为您提供的功能。
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'];