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

如何通过PHP获取最新的JSON元素?,php,json,Php,Json,每次向子行添加新状态和时间时。下面是一个JSON数据示例。我想通过PHP获取最新的状态和时间元素 [ { "status": "NEW", "time":"2018-07-25T06:26:05Z" }, { "status": "EXPIRED", "time":"2018-07-25T06:41:13Z" } ] 如果您使用php解码json,您将为相同的json设置门阵列。PHP有一个数组

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

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

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

如果您使用php解码json,您将为相同的json设置门阵列。PHP有一个数组函数是end()。该函数给出数组的最后一个元素。这将给出最新的JSON元素

不完全确定这是否是您所追求的,但它可能会帮助您朝着正确的方向前进。这需要飞船操作员使用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

这里我根据您的需要提到了一个示例代码。我们有一个按键“time”排列的元素数组。您可以按用户定义的函数升序排序数组,然后使用php end()函数获取数组的最后一个元素。这将为您提供最新的记录

这是解码json后得到的示例数组

排列 ( [0]=>阵列 ( [状态]=>新建 [时间]=>2018-07-25T06:26:05Z )

)

然后使用下面的代码

$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")
))

您将获得此输出

Array
( [0]=>阵列 ( [状态]=>新建 [时间]=>2018-07-25T06:26:05Z )

)


因此,您将在数组的最后一个元素获得最新记录。

您尝试过什么吗?像在google上搜索“数组php的最后一个元素”一样?你能详细说明你的问题吗?需要更多的信息,比如json是如何生成的以及从哪里获取php中的json数据等。你可以使用$j_data=json_decode($json),并使用echo$j_data[sizeof($j_data)]访问最新的一个使用
time
列对数组进行排序,然后获取最后一个元素。end()给出的是最后一个元素而不是最新的元素。如果数组按时间排序,这只会给出最新的元素。默认情况下,json_decode()不会返回数组。您需要在第二个参数中传递
true
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
[2] => Array
    (
        [status] => EXPIRED
        [time] => 2018-07-25T06:41:13Z
    )

[1] => Array
    (
        [status] => new
        [time] => 2018-07-25T06:52:05Z
    )