javascript - 如何使用php从json文件中删除节点
问题描述
我有下一个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放入的数字导致我无法读取文件。我怎样才能避免这种情况发生?
我将不胜感激您的回答
解决方案
unset()
只是从数组中删除一个索引,它不会调整所有其他元素的索引。当数组的索引不是从 开始的连续数字时0
,json_encode()
将其编码为对象,而不是数组。
取消设置后,您可以重置所有索引
$data = array_values($data);
或者您可以使用array_splice()
删除元素:
array_splice($data, $index, 1);
推荐阅读
- python - 定义一个替换下一个单元格内容的 IPython 魔法
- javascript - 无法从数组Vuex中删除项目
- reactjs - 食谱已发布但未保存
- reactjs - React-Hooks:如何创建具有动态内容的可重用数据表组件
- php - 在php中使用if-else循环动态选择mysql表
- linux - 有没有办法在多个 AWS EC2 linux 实例中管理(添加/删除)多个用户
- sql - 基于输入范围的排序逗号分隔字符串的 MAX/MIN 的 SQL 查询
- python - Python。如何将两个字符内的单词转换为列表
- python - 用while循环对列表中的负元素求和
- android - Flutter local_notification zonedSchedule 在 APK 版本中不起作用