我使用jQuery制作了一个小型应用程序datepicker。我正在从如下所示的JSON文件中为其设置不可用的日期:
datepicker
{ "dates": ["2013-12-11", "2013-12-10", "2013-12-07", "2013-12-04"] }
我想检查给定的日期是否已经在此列表中,如果有,请删除它。我当前的代码如下所示:
if (isset($_GET['date'])) //the date given { if ($_GET['roomType'] == 2) { $myFile = "bookedDates2.json"; $date = $_GET['date']; if (file_exists($myFile)) { $arr = json_decode(file_get_contents($myFile), true); if (!in_array($date, $arr['dates'])) { $arr['dates'][] = $_GET['date']; //adds the date into the file if it is not there already } else { foreach ($arr['dates'] as $key => $value) { if (in_array($date, $arr['dates'])) { unset($arr['dates'][$key]); array_values($arr['dates']); } } } } $arr = json_encode($arr); file_put_contents($myFile, $arr); } }
我的问题是在我再次对数组进行编码后,它看起来像这样:
{ "dates": ["1":"2013-12-11", "2":"2013-12-10", "3":"2013-12-07", "4":"2013-12-04"] }
有没有一种方法可以在JSON文件中找到日期匹配并将其删除,而在编码后不会出现键?
使用array_values()您的问题:
array_values()
$arr['dates'] = array_values($arr['dates']); //.. $arr = json_encode($arr);
为什么?因为您要取消设置数组的键而无需重新排序。因此,在此之后,将其保留在JSON中的唯一方法也是编码键。array_values()但是,应用后,您将获得有序的键(从开始0),这些键可以正确编码而无需包含键。
0