PHP读取OpenWeatherMap API中含混合键的JSON数据报错求解决方案
解决PHP读取数字开头属性的问题
当API返回的对象属性名是1h这类以数字开头的字符串时,直接使用->1h会触发语法错误,因为PHP的标识符规则不允许属性名以数字开头。你可以通过以下两种方式正确读取该值:
方法一:使用花括号包裹属性名
这是PHP针对特殊属性名的原生支持语法,直接把属性名用花括号括起来即可:
$rainAmount = $data->hourly[$hour]->rain->{'1h'};
方法二:将对象转换为数组访问
把包含目标属性的对象强制转换为数组,再通过数组下标读取:
$rainData = (array)$data->hourly[$hour]->rain; $rainAmount = $rainData['1h'];
额外建议
如果该小时可能没有降雨(即rain字段不存在),建议先做存在性校验,避免触发Undefined Property错误:
$rainAmount = 0; // 默认值 if (isset($data->hourly[$hour]->rain) && isset($data->hourly[$hour]->rain->{'1h'})) { $rainAmount = $data->hourly[$hour]->rain->{'1h'}; }
内容的提问来源于stack exchange,提问作者edgar_wideman
相关产品推荐
相关产品推荐

