Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按大于当前日期筛选php中的JSON_Php_Arrays_Json - Fatal编程技术网

按大于当前日期筛选php中的JSON

按大于当前日期筛选php中的JSON,php,arrays,json,Php,Arrays,Json,如何按大于今天的日期筛选json响应 我的JSON看起来像: { "responseData": [ { "totalValue": 0.0, "active": "Oct 16, 2019 11:16:23 AM", "expired": "Mar 28, 2020 3:15:58 PM" }, { "totalValue": 0.0,

如何按大于今天的日期筛选json响应

我的JSON看起来像:

{
    "responseData": [
        {
            "totalValue": 0.0,
            "active": "Oct 16, 2019 11:16:23 AM",
            "expired": "Mar 28, 2020 3:15:58 PM"
        },
        {
            "totalValue": 0.0,
            "active": "Oct 16, 2019 11:16:23 AM",
            "expired": "Mar 28, 2020 3:15:58 PM"
        },
        {
            "totalValue": 0,
            "active": "Jun 25, 2019 6:34:59 PM",
            "expired": "Oct 16, 2019 11:10:32 AM",
    }
    ],
    "responseMessage": "success",
    "responseCode": 0
}
以及要筛选的php脚本:

date_default_timezone_set('UTC');


$date1 = date('M d, Y H:i:s A'); //Oct 16, 2019 11:16:23 AM

    $json = json_decode($mybalance, true);
    usort($json['responseObject'], function($date1, $b) { return $date1 > $b['expired']; } );
    $mybalance2 = json_encode($json);

    header('Content-Type: application/json;charset=utf-8');

    echo $mybalance2;
但是输出仍然显示所有数据而不是过滤,我的预期输出是:

{
    "responseData": [
        {
            "totalValue": 0.0,
            "active": "Oct 16, 2019 11:16:23 AM",
            "expired": "Mar 28, 2020 3:15:58 PM"
        },
        {
            "totalValue": 0.0,
            "active": "Oct 16, 2019 11:16:23 AM",
            "expired": "Mar 28, 2020 3:15:58 PM"
        }
    ],
    "responseMessage": "success",
    "responseCode": 0
}

已尝试通过google找到解决方案,但没有成功:(

您实际上并没有筛选数据,因为
usort()
将使用用户定义的比较函数按值对数组排序。(您已经定义的)

做:

date\u default\u timezone\u set('UTC');
$date1='2019年10月16日上午11:16:23';
$json=json_decode($mybalance,true);
foreach($json['responseData']作为$key=>$value){
如果(strotime($value['expired'])
输出:-

注意:-您可以使用
strotime(日期('Y-m-dh:i:s'))
而不是
strotime(日期('md,Y-H:i:sa'))


示例输出:

您实际上并没有筛选数据,因为
usort()
将使用用户定义的比较函数按值对数组进行排序。(您已经定义的)

做:

date\u default\u timezone\u set('UTC');
$date1='2019年10月16日上午11:16:23';
$json=json_decode($mybalance,true);
foreach($json['responseData']作为$key=>$value){
如果(strotime($value['expired'])
输出:-

注意:-您可以使用
strotime(日期('Y-m-dh:i:s'))
而不是
strotime(日期('md,Y-H:i:sa'))


示例输出:

从哪里获得
$b['toDate']
?。另外
$date1=date('md,yh:i:sa');
将为您提供当前日期hi@AnantSingh---AlivetoDie,抱歉,这是类型它应该是
$b['expired']
是的,我想获取当前日期作为比较,我的目标只是在大于当前日期时显示数据,因此如果过期数据不会显示在JSON中,那么您可以从哪里获得
$b['toDate']
将为您提供当前日期hi@AnantSingh---AlivetoDie,抱歉,这是类型,它应该是
$b['expired'];
是的,我想获取当前日期作为比较,我的目标只是显示大于当前日期的数据,因此如果过期数据将不会显示在json中
date_default_timezone_set('UTC');

$date1 = 'Oct 16, 2019 11:16:23 AM';

$json = json_decode($mybalance, true);

foreach($json['responseData'] as $key=>$value){

    if(strtotime($value['expired']) < strtotime(date('M d, Y H:i:s A'))){

        unset($json['responseData'][$key]);

    }
}