You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHP重命名JSON子键时出现数字索引问题求助

问题原因分析

你代码的问题出在两个函数的误用:

  • array_push() 仅适用于索引数组追加元素,会自动生成数字下标,所以才会出现你遇到的0键名问题,关联数组新增键值对直接赋值即可
  • array_slice() 是用来截取数组片段的函数,不能用来删除关联数组的指定键,删除指定键需要用unset()函数
  • 额外提醒:如果你需要保证数据和字段定义匹配,还要同步修改data数组下每条记录的Name键为Task,否则后续数据读写会出现不对应的问题
修复后的完整代码
// 字符串需要加引号,原代码此处存在语法错误
$file = 'file.json';  
$jsn = file_get_contents($file);
$data = json_decode($jsn, true);
 
// 重命名columns下的Name键为Task
$data['columns']['Task'] = $data['columns']['Name'];
// 删除旧的Name键
unset($data['columns']['Name']);

// 可选:同步修改data数组中每条数据的Name键为Task,不需要可以删除这段
foreach ($data['data'] as &$item) {
    $item['Task'] = $item['Name'];
    unset($item['Name']);
}
// 释放引用变量,避免后续操作出现异常
unset($item);

// JSON_UNESCAPED_UNICODE保证中文不会被转义,JSON_PRETTY_PRINT会格式化输出格式更易读
$jsn = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
file_put_contents($file, $jsn);
操作说明
  • 不需要修改data数组的键的话,直接删除掉foreach相关的代码段即可
  • 代码修复了原代码中字符串未加引号、数组定义语法错误的问题,可直接运行

内容的提问来源于stack exchange,提问作者Maharlikan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:36:04