【问题标题】:How to delete a node from json file with php如何使用php从json文件中删除节点
【发布时间】:2020-04-01 21:28:04
【问题描述】:

我有下一个json:

[
    {
        "clave": "es",
        "content": {
            "barra": [
                "a",
                "a",
                "N",
                "C"
            ],
            "letras_inicio": "a",
            "titulos_servicios": [
                "A",
                "A",
                "A"
            ],
            "desc_servicios": [
                "O",
                "O",
                "E"
            ],
            "titulo_nosotros": "n",
            "descripcion_nosotros": "S",
            "titulos_especialidades": [
                "A",
                "A"
            ],
            "desc_especialidades": [
                "E",
                "L"
            ],
            "titulo_frm_contacto": "Co",
            "frmContacto": [
                "N",
                "c",
                "C",
                "A",
                "M",
                "E"
            ]
        }
    },
    {
        "clave": "por",
        "content": {
            "barra": [
                "f",
                "f",
                "f",
                "f"
            ],
            "letras_inicio": "f",
            "titulos_servicios": [
                "f",
                "f",
                "f"
            ],
            "desc_servicios": [
                "qf",
                "qf",
                "qf"
            ],
            "titulo_nosotros": "f",
            "descripcion_nosotros": "qf",
            "titulos_especialidades": [
                "f",
                "f"
            ],
            "desc_especialidades": [
                "qf",
                "qf"
            ],
            "titulo_frm_contacto": "f",
            "frmContacto": [
                "f",
                "f",
                "f",
                "f",
                "f",
                "f"
            ]
        }
    }
]

下一个代码是我用来从 json 文件中删除一个节点:

$json = file_get_contents('php://input');
$obj = json_decode($json);
$index = filter_var($obj->index);
$data = file_get_contents('languajes.json');
$data = json_decode($data,true);
unset($data[$index]);
if($data = json_encode($data,JSON_PRETTY_PRINT)){
    echo 'success';
}else{
    echo 'failed';
}
file_put_contents('languajes.json', $data);

所以,当我保存 json 时,它看起来像:

{
    "0": {
        "clave": "es",
        "content": {
            "barra": [
                "I",
                "S",
                "N",
                "C"
            ],
            "letras_inicio": "N",
            "titulos_servicios": [
                "A",
                "A",
                "A"
            ],
            "desc_servicios": [
                "O",
                "O",
                "E"
            ],
            "titulo_nosotros": "N",
            "descripcion_nosotros": "S",
            "titulos_especialidades": [
                "A",
                "A"
            ],
            "desc_especialidades": [
                "E",
                "L"
            ],
            "titulo_frm_contacto": "C",
            "frmContacto": [
                "N",
                "A",
                "C",
                "A",
                "M",
                "E"
            ]
        }
    },
    "2": {
        "clave": "en",
        "content": {
            "barra": [
                "H",
                "S",
                "A",
                "C"
            ],
            "letras_inicio": "W",
            "titulos_servicios": [
                "W",
                "M",
                "D"
            ],
            "desc_servicios": [
                "W",
                "W",
                "W"
            ],
            "titulo_nosotros": "A",
            "descripcion_nosotros": "W",
            "titulos_especialidades": [
                "W",
                "m"
            ],
            "desc_especialidades": [
                "f",
                "a"
            ],
            "titulo_frm_contacto": "C",
            "frmContacto": [
                "F",
                "L",
                "E",
                "S",
                "M",
                "S"
            ]
        }
    }
}

问题是当你在将数据保存在json文件后尝试读取数据时,php输入的数字导致我无法读取文件。 我怎样才能避免这种情况发生?

感谢您的回答

【问题讨论】:

  • 你从 AJAX 调用传递了什么数据
  • 重置索引,file_put_contents('languajes.json', array_values($data));

标签: javascript php arrays json


【解决方案1】:

unset() 只是从数组中删除一个索引,它不会调整所有其他元素的索引。当数组的索引不是从0 开始的连续数字时,json_encode() 会将其编码为对象,而不是数组。

取消设置后,您可以重置所有索引

$data = array_values($data);

或者你可以使用array_splice()来移除元素:

array_splice($data, $index, 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多