不能直接 include 或 require json 文件,因其不是 php 语法,会触发解析错误;必须用 file_get_contents 读取后配合 json_decode($json, true) 解析为关联数组,并检查返回值及 json_last_error() 确保合法性。

file_get_contents 配合 json_decode 是最直接、最稳妥的方式,别用 fopen + fread 手动拼字符串,也别试图 include JSON 文件——PHP 不认它为合法 PHP 代码。
为什么不能直接 include 或 require JSON 文件
JSON 文件内容如 {"name": "Alice", "age": 30} 不是 PHP 语法,include 会触发解析错误:Parse error: syntax error, unexpected '{'。PHP 只加载 .php、.inc 等可执行脚本,不解析纯数据文件。
json_decode 的第二个参数必须设为 true 才能得到关联数组
默认返回 stdClass 对象,访问字段得用 ->,比如 $data->name;但多数业务逻辑更习惯用数组键名访问,比如 $data['name']。所以实际写法应为:
$json_str = file_get_contents('config.json');
$data = json_decode($json_str, true); // 注意第二个参数是 true
漏掉 true 会导致后续 isset($data['name']) 始终为 false,且 foreach($data as $k => $v) 无法遍历对象属性(除非用 get_object_vars())。
读取失败时的常见错误和应对
JSON 文件路径错、权限不足、内容格式非法都会让 file_get_contents 或 json_decode 静默失败。务必检查:
-
file_get_contents('data.json')返回false?先确认路径是否相对当前执行脚本(不是 web root),建议用__DIR__ . '/data.json' -
json_decode返回null?调用json_last_error()和json_last_error_msg()查具体原因,常见如 UTF-8 BOM、末尾多逗号、单引号代替双引号 - 文件编码必须是 UTF-8 无 BOM;Windows 记事本保存的 JSON 很容易带 BOM,导致
json_decode直接返回null
复杂点在于 JSON 内容合法性完全依赖人工或外部输入,json_decode 不报错只代表语法通过,不代表字段存在或类型正确——业务层仍需做 isset 和类型校验,不能全信返回值。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











