Php 如何在JSON中找到一个值并将其取消设置?
所以基本上我有这个页面,它接受值,json_对它们进行编码,并将它们放在一个数组中,放在一个文件中。一切正常,但我唯一遇到的问题是,一旦某些值超过某个日期,就会删除它们 因此,基本上,代码是一个表单,其中有人输入他们的姓名、电子邮件、位置、日期和一条小消息。接下来,代码获取现有文件,将其转换为数组,并将新条目追加到数组中,使用新数组重写文件并关闭它。条目被转换为它们自己的小数组,因此文件中的主数组中包含数组。代码检查$item[2],它是日期,如果当前日期在该时间之后,则需要将其删除。我只是很难让它删除JSON以便删除条目 我知道这是很多,我的代码是非常混乱的,但我希望你能理解我在做什么 以下是比较日期的代码:Php 如何在JSON中找到一个值并将其取消设置?,php,json,Php,Json,所以基本上我有这个页面,它接受值,json_对它们进行编码,并将它们放在一个数组中,放在一个文件中。一切正常,但我唯一遇到的问题是,一旦某些值超过某个日期,就会删除它们 因此,基本上,代码是一个表单,其中有人输入他们的姓名、电子邮件、位置、日期和一条小消息。接下来,代码获取现有文件,将其转换为数组,并将新条目追加到数组中,使用新数组重写文件并关闭它。条目被转换为它们自己的小数组,因此文件中的主数组中包含数组。代码检查$item[2],它是日期,如果当前日期在该时间之后,则需要将其删除。我只是很难
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"]]
我只是猜测我们有一个与问题中的输出类似的
$arr
在这里,我们循环遍历数组,然后使用一个简单的表达式逐个检查要排除的模式,例如日期
:
/([0-9]{4}.+)/m
然后,我们取消设置日期
,作为示例,然后json\u将数组编码回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"}]