每次将新状态和时间添加到子行。以下是JSON数据的示例。我想通过PHP获取最新的状态和时间元素。
[
{
"status": "NEW",
"time":"2018-07-25T06:26:05Z"
},
{
"status": "EXPIRED",
"time":"2018-07-25T06:41:13Z"
}
]
答案 0 :(得分:0)
如果您使用php解码json,则将为相同的JSON门控数组。 PHP的array的一个函数是end()。此函数给出数组的最后一个元素。这将为您提供最新的JSON元素。
答案 1 :(得分:0)
不能完全确定这是否是您要追求的目标,但可以帮助您指明正确的方向。这要求飞船操作员<=>
使用PHP7。
<?php
$json = '[{"status": "NEW", "time":"2018-07-25T06:26:05Z"}, {"status": "EXPIRED", "time":"2018-07-25T06:41:13Z"}]';
$decoded = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
// Error Handling.
}
// Sort into Time Order
usort($decoded, function ($a, $b) {
return new DateTime($a['time']) <=> new DateTime($b['time']);
});
echo end($decoded)['status']; // EXPIRED
如果您想要一个非PHP7版本,请告诉我,我会提供一个。
答案 2 :(得分:0)
在这里我根据您的需要提到了一个示例代码。我们有一个数组,其中一个元素被键“ time”扰乱。您可以按用户定义的函数按升序对数组进行排序,然后通过使用php end()函数。它将为您提供最新记录。
这是解码json后获得的示例数组。
数组 ( [0] =>数组 ( [状态] =>新 [时间] => 2018-07-25T06:26:05Z )
[1] => Array
(
[status] => new
[time] => 2018-07-25T06:52:05Z
)
[2] => Array
(
[status] => EXPIRED
[time] => 2018-07-25T06:41:13Z
)
)
然后使用下面的代码
$a =array(
array('status'=>"new","time"=>"2018-07-25T06:26:05Z"),
array('status'=>"new","time"=>"2018-07-25T06:52:05Z"),
array('status'=>"EXPIRED","time"=>"2018-07-25T06:41:13Z")
);
function cmp($a, $b) {
if(strtotime($a['time']) == strtotime($b['time'])) {
return 0;
}
return (strtotime($a['time']) < strtotime($b['time'])) ? -1 : 1;
}
uasort($a, 'cmp');
print_r($a);
您将获得此输出
Array
( [0] =>数组 ( [状态] =>新 [时间] => 2018-07-25T06:26:05Z )
[2] => Array
(
[status] => EXPIRED
[time] => 2018-07-25T06:41:13Z
)
[1] => Array
(
[status] => new
[time] => 2018-07-25T06:52:05Z
)
)
所以您将在数组的最后一个元素上获得最新记录。