当前位置: 首页 > 面试题库 >

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

皇甫礼骞
2023-03-14
问题内容

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


问题答案:

使用array_values()您的问题:

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

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



 类似资料:
  • 问题内容: 我想删除我的json_encode中的双引号,即我的代码: 我的结果是: 我也想删除“ id_posiciones”和“ device_version”的双引号。 我该怎么做的结果是: 问题答案: 如果最后在您的正则表达式中添加下划线,它将执行此操作。 我认为那正是preg_replace的目的。

  • 命令用于删除指定的索引。 如果索引创建时未指定索引名称,则索引名称为。 语法 或者 - 删除索引的规则 如果索引不存在,它将返回错误,除非您使用,否则不返回任何操作。 在创建索引期间,您必须使用索引名称指定名称,否则将当前键空间中的索引删除。 示例: 下面举个例子来演示如何删除某列上的索引。 在这里,我们将创建的索引放在表“”中的“”列中。键空间的名称是“”。 如下语句 - 从“”列中删除索引。

  • 我有很多上面格式的日志,我想删除旧日志(比如超过5天的日志),方法是(在上面的日志(2019.02.13))范围内)。我已经通过查询进行了删除日志的查询。 我得到了以下错误: <代码>[解析\u异常]没有为[@时间戳]注册的[查询],且{行=1 注意:我使用NestJS调用elasticsearch api,并使用elasticsearch[6.4]。我不想使用elasticsearch策展人。

  • 问题内容: 我相信在A,B,C,D的两个表字段之间插入了唯一索引,以防止重复。但是我以某种方式简单地对它们做了一个普通索引。因此插入了重复项。它是2000万个记录表。 如果我将现有索引从普通索引更改为唯一索引,或者只是为A,B,C,D添加新的唯一索引,由于存在唯一记录,重复项将被删除还是添加失败?我将对其进行测试,但它已达到3000万条记录,并且我既不希望将表弄乱或复制它。 问题答案: 如果表中有

  • 改变原始数组,过滤掉指定索引的值。 使用 Array.filter() 和 Array.includes() 来剔除指定的值。使用 Array.length = 0 将数组中的长度重置为零, 并且通过 Array.push() 只使用 pulled 值重新填充数组。使用 Array.push() 来跟踪 pulled 值。 const pullAtIndex = (arr, pullArr) =>

  • 本文向大家介绍如何使用Java在MongoDB中删除索引?,包括了如何使用Java在MongoDB中删除索引?的使用技巧和注意事项,需要的朋友参考一下 在MongoDB中删除索引,您需要使用dropIndex()方法。 语法 在Java中,可以使用dropIndex()方法删除索引,您需要将索引的类型(升序或降序)和在其上创建字段的名称传递给该方法。 示例 输出结果