如何通过PHP获取最新的JSON元素?

时间:2018-07-25 09:04:04

标签: php json

每次将新状态和时间添加到子行。以下是JSON数据的示例。我想通过PHP获取最新的状态和时间元素。

[
    {
        "status": "NEW",
        "time":"2018-07-25T06:26:05Z" 
    },

    {
        "status": "EXPIRED",
        "time":"2018-07-25T06:41:13Z"
    }
]

3 个答案:

答案 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
    )

所以您将在数组的最后一个元素上获得最新记录。