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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:10:28