JSON,获取第一个结果而不是最后一个结果


JSON, get first result instead of last one

我有一个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'];