如何在JSON中查找值并将其取消设置?

时间:2019-05-27 23:54:58

标签: php json

所以基本上,我有这个页面,它接受值,对它们进行json_encode编码,然后将它们放入文件的数组中。一切正常,但是我唯一遇到的问题是,一旦值超过某个日期,就删除它们。

因此,基本上,代码是一种表单,在此表单中,用户可以输入自己的姓名,电子邮件,位置,日期和一条小消息。接下来,代码将现有文件转换为数组,然后将新条目追加到数组中,并使用新数组重写文件并关闭它。这些条目变成了自己的小数组,因此文件中的主数组中包含数组。代码检查$ item [2],它是日期,如果当前日期在该时间之后,则需要将其删除。我只是想让它删除JSON,以便它可以删除条目。

我知道很多事情,而且我的代码很乱,但是我希望你能理解我正在尝试做的事情。

以下是比较日期的代码:

foreach ($arr as $help)
                      {
                        foreach ($help as $item)
                          {
                            if ($item[2] > date("Y-m-d H:i:s"))
                            {
                            //stuff happens here, ive just cut it out for simplicity.
}
                          else {
                            $delete = [$item[0],$item[1],$item[2],$item[3],$item[4]];
                            $delete2 = json_encode($delete);

                            $open = fopen('data.txt', 'r');
                            $inside = fread($open, filesize('data.txt'));
                            $newinside = json_decode($inside);
                            $newar = [$newinside];

                            $bean = array_search($delete, $newar);
                            echo $bean;


                          }
                          }

                      }

该代码肯定是错误的,但这是我已经尝试过的。

这是经过完全编码的json文件:

[["Simon Long","simon@greatnessgroup.com","2018-01-01T01:01","test","aaa"],["test","test@gmail.com","2020-01-01T01:01","yeah","test\r\n"]]

1 个答案:

答案 0 :(得分:0)

我只是猜测我们有一个$arr与问题中的输出类似。

在这里,我们遍历数组,然后使用简单的表达式逐个检查一个我们不想排除的模式,例如dates

/([0-9]{4}.+)/m

然后,作为示例,我们取消设置dates,并将数组json_encode返回json。

$arr = '[["Simon Long", "simon@greatnessgroup.com", "2018-01-01T01:01", "test", "aaa"], ["test", "test@gmail.com", "2020-01-01T01:01", "yeah", "test\r\n"]]';
$arr = json_decode($arr, true);
foreach ($arr as $key => $value) {
    foreach ($value as $key2 => $value2) {
        $re = '/([0-9]{4}.+)/m';
        preg_match_all($re, $value2, $matches, PREG_SET_ORDER, 0);
        foreach ($matches as $key3 => $value3) {
            unset($arr[$key][$key2]);
        }

    }
}

print json_encode($arr);

输出

[{"0":"Simon Long","1":"simon@greatnessgroup.com","3":"test","4":"aaa"},{"0":"test","1":"test@gmail.com","3":"yeah","4":"test\r\n"}]

DEMO