json - Laravel - 如何按 desc 顺序对外部 API 进行排序并选择记录集
问题描述
在我的 Laravel-8 中,我正在使用 Guzzle 获取外部 API:
我在控制器中得到了 dd($json) 的这组记录:
array:554 [▼
0 => array:30 [▼
"PartitionKey" => "19SB22"
"RowKey" => "0000"
"Timestamp" => "2021-01-22T12:30:25.4698261Z"
"client_tracking_id" => "ddd3321"
"current_asset_position_name" => "2, Adelaide, Australia"
"service_tracking_id" => "19SB22"
"this_tracking_job_id" => "0000"
"trip_status" => "DISPATCHED"
]
1 => array:31 [▼
"PartitionKey" => "19SB22"
"RowKey" => "2233"
"Timestamp" => "2021-02-23T20:51:50.3066741Z"
"client_tracking_id" => "TRIP-20200621007"
"current_asset_position_name" => "20, Adelaide, Australia"
"service_tracking_id" => "19SB22"
"this_tracking_job_id" => "19SB22"
"trip_status" => "AROUND CUSTOMER LOCATION"
]
....
这是控制器:
public function index() {
$client = new Client();
$res = $client->request('GET','https://example.com/api/tracking/19SB22', [
'query' => ['key' => 'jkkmkf']
])->getBody();
$json = json_decode($res->getContents(), true);
return view('welcome', [
'json' => $json,
]);
如何使用 Timestamp 字段对结果 $json 进行降序排序并选择第一组记录?
谢谢
解决方案
使用Collections
andCarbon
将日期字符串转换为正确的时间戳。
集合是 laravel 数组扩展,它可以对集合(数组)进行函数调用。有一个sortBy()
和sortyByDesc()
功能,这些可以使用和使用Carbon::parse()
,应该能够解析你的祖鲁日期。之后,您可以使用first()
来获取您的元素。
$firstElement = collect($yourData)->sortByDesc(function ($data) {
return Carbon::parse($data['Timestamp'])->timestamp;
})->first();
推荐阅读
- ios - 子视图控制器的 viewDidLayout 在父视图控制器的 viewDidLayout 之前调用
- mule - Dataweave 2.0 - 无法将字符串强制转换为 LocalDateTime
- python - 在 subprocess.run 中将 sudo 放在哪里?
- java - 如何更改之前创建的自定义视图的一个属性?
- python - 包含大时间循环的模型函数 (PYCM3)
- opencv - 如何使用 OpenCV 将点从 2D 投影到 3D?
- c++ - 学习阅读 ISO C++ 标准所需的逻辑格式和词汇的最佳方法是什么?
- django - 通过非主键问题连接序列化程序
- excel - 从更大的阵列中删除一个阵列?
- python - 如何使用 Pyinspect 获取 Win32 应用程序中的所有元素 ID?