PHP中无法解析含数字键的JSON:语法错误问题求助
解决PHP解析带数字键JSON的语法错误问题
这个问题我太熟了!你遇到的是PHP访问JSON数字键属性时的语法限制问题,咱们一步步来解决:
问题根源
你看到的Parse error: syntax error, unexpected '24'错误,本质是PHP的语法规则限制:如果JSON解析后得到的对象(默认是stdClass类型)的属性名是纯数字(比如24),直接用->24这种写法是不合法的——PHP要求对象的属性名必须是合法标识符(不能以数字开头),所以解析器看到24直接就懵了,不知道该怎么处理。
两种可行解决办法
方法1:用大括号包裹数字键(针对对象类型结果)
如果你坚持要把JSON解析成对象,访问数字键属性时,需要把键名用引号包裹后放在大括号里:
// ❌ 错误写法(触发你遇到的报错) $value = $data->24; // ✅ 正确写法 $value = $data->{'24'};
方法2:将JSON解码为关联数组(更推荐)
直接给json_decode添加第二个参数true,让JSON直接转换为关联数组,这样就能像普通数组一样用键名访问,处理数字键更直观:
// 解码为关联数组 $data = json_decode($your_json_string, true); // 直接用数组键访问数字键对应的值 $value = $data['24'];
验证示例
假设你的JSON内容是:
{"24": "今日访问量", "username": "blockGecko"}
用方法2的代码测试:
$json = '{"24": "今日访问量", "username": "blockGecko"}'; $data = json_decode($json, true); echo $data['24']; // 输出:今日访问量
完全不会出现语法错误。
内容的提问来源于stack exchange,提问作者block Gecko
相关产品推荐
相关产品推荐

