微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用json_encode时删除数组索引引用

如何解决使用json_encode时删除数组索引引用

使用array_values()您的问题:

$arr['dates'] = array_values($arr['dates']);
//..
$arr = json_encode($arr);

为什么?因为您要取消设置数组的键而无需重新排序。因此,在此之后,将其保留在JSON中的唯一方法也是编码键。array_values()但是,应用后,您将获得有序的键(从开始0),这些键可以正确编码而无需包含键。

解决方法

我使用jQuery制作了一个小型应用程序datepicker。我正在从如下所示的JSON文件中为其设置不可用的日期:

{ "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文件中找到日期匹配并将其删除,而在编码后不会出现键?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。