如何解决查找具有最小和最大列值的条目并打印多个值
我想根据我得到的最小值和最大值来获取“created-at”数据。我有一个类似这样的 JSON。
{
"channel": {
"id": "xxxxxxx","field1": "A","created_at": "2021-06-16T19:06:15+07:00","updated_at": "2021-06-16T19:09:58+07:00","last_entry_id": 459
},"Feeds": [
{
"created_at": "2021-06-19T07:00:11+07:00","entry_id": 1,"field1": "26.51"
},{
"created_at": "2021-06-19T07:00:26+07:00","entry_id": 2,"field1": "26.78"
},{
"created_at": "2021-06-19T07:00:56+07:00","entry_id": 3,"field1": "26.81"
}
]
}
这是我的代码。
$url = 'https://zzz';
$sumber = file_get_contents($url);
$z = json_decode($sumber);
print_r($z);
echo '<br><br>';
$length = count($z->Feeds);
$val1 = array();
for ($i = 0; $i < $length; $i++) {
$val1[] = round($z->Feeds[$i]->field1,2);
}
$min1 = min($val1);
$max1 = max($val1);
echo "max : ". $max1 ." - min: ". $min1.'<br>';
我上面代码的结果是这样的max : 26.81 - min: 26.51
,但我想要这样的结果 max : 26.81 2021-06-19T07:00:56+07:00 - min: 26.51 2021-06-19T07:00:11+07:00
有人可以帮我吗?
解决方法
按 field1
列对提要数组进行排序,然后(假设提要数组中至少有 1 个条目并且不考虑“关系”)访问第一个和最后一个条目。
使用 printf()
可以清晰地显示数据,而不会出现混乱的串联。
代码:(Demo)
$feeds = json_decode($json,true)['feeds'];
usort($feeds,function($a,$b) {
return $b['field1'] <=> $a['field1'];
});
$last = array_slice($feeds,-1)[0];
printf(
'max : %.2f %s - min: %.2f %s',round($feeds[0]['field1'],2),$feeds[0]['created_at'],round($last['field1'],$last['created_at']
);
输出:
max : 26.81 2021-06-19T07:00:56+07:00 - min: 26.51 2021-06-19T07:00:11+07:00
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。