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

如何使用PHP将JSON数据插入到JSON数组中

如何用PHP将新数据插入JSON数组

嘿,我明白你要做的事——把新的MC版本数据添加到url.json里的minecraft数组中对吧?先梳理下你的现有内容,再一步步解决问题:

你的现有文件内容

url.json

{ 
  "minecraft" : [ 
    { "version" : "MC v1", "url" : "http://www.google.com" }, 
    { "version" : "MC v12", "url" : "http://www.google.com" } 
  ] 
}

你的admin.php片段

## Add MC to version 
$Version = "MC " . strtolower($_POST["version"]); 
## Insert Data To JSON file!!!! 
$Data_Now = file_get_contents('url.json'); 
$json = json_decode($D... 

完整解决方案

你的思路是对的,但还差几个关键步骤:解码后要把新数据加入数组,再重新编码写回文件。这里给你补全并优化代码,还加了基础的错误处理:

<?php
// 先检查POST参数是否存在,避免报错
if (!isset($_POST["version"]) || !isset($_POST["url"])) {
    die("请提供版本号和URL参数");
}

// 构造新的版本数据
$newVersion = [
    "version" => "MC " . strtolower($_POST["version"]),
    "url" => $_POST["url"] // 假设你也需要从POST获取URL,可根据实际需求调整
];

// 读取现有JSON文件
$jsonFile = 'url.json';
$dataNow = file_get_contents($jsonFile);
if ($dataNow === false) {
    die("无法读取JSON文件,请检查文件路径或权限");
}

// 解码JSON为PHP关联数组(第二个参数true很重要,不然会得到对象)
$jsonData = json_decode($dataNow, true);
if ($jsonData === null) {
    die("JSON格式无效,请检查url.json的内容");
}

// 将新数据添加到minecraft数组末尾
$jsonData['minecraft'][] = $newVersion;

// 重新编码为JSON,用JSON_PRETTY_PRINT保持格式美观
$updatedJson = json_encode($jsonData, JSON_PRETTY_PRINT);
if ($updatedJson === false) {
    die("编码JSON失败,请检查数据格式");
}

// 写回文件
if (file_put_contents($jsonFile, $updatedJson) === false) {
    die("无法写入JSON文件,请检查文件写入权限");
}

echo "数据添加成功!";
?>

关键要点说明

  • json_decode($dataNow, true):第二个参数设为true,会把JSON对象转换成PHP关联数组,操作起来更直观;如果不传这个参数,得到的是stdClass对象,需要用->访问属性。
  • $jsonData['minecraft'][] = $newVersion:这行是核心逻辑,直接把新的数组元素追加到minecraft数组的末尾,和你原有的数据结构保持一致。
  • JSON_PRETTY_PRINT:编码时加上这个常量,生成的JSON会有缩进和换行,和你原文件的格式保持一致,可读性更强。
  • 错误处理:添加了文件读写、JSON解码编码的错误检查,避免出现白屏或模糊报错,方便你调试问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:28:33