所以基本上,我有这个页面,它接受值,对它们进行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"]]
答案 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"}]