PHP中如何访问数字命名的对象属性?
解决PHP中数字命名的对象属性访问问题
这问题我之前踩过坑!数字作为对象属性名确实违反了PHP标识符的命名规则(标识符不能以数字开头),所以直接用$query->201609会触发语法错误,而用$query->{201609}得到0是因为PHP把这个数字当成了整数处理,和实际存储的字符串类型属性名不匹配。
正确的访问方式
你需要把数字属性名以字符串形式传入花括号中,这样PHP才能正确识别对应的属性:
// 直接指定字符串属性名 $value = $query->{"201609"}; echo $value; // 输出 130000
循环场景下的动态处理
如果是在foreach循环中动态获取这类属性(比如不确定具体是哪个数字属性名),可以用这两种方式处理:
foreach($yourArray as $query) { // 方法1:转换为数组后访问 $queryArray = (array)$query; $value = $queryArray['201609']; // 必须使用字符串键名 // 方法2:遍历对象的所有属性 foreach(get_object_vars($query) as $key => $val) { // $key 就是字符串形式的"201609" echo $val; // 输出 130000 } }
为什么之前的写法会失效?
对象的属性名本质都是字符串类型,当你用$query->{201609}时,PHP会把201609当作整数处理,和实际存储的字符串属性名"201609"不匹配,导致无法找到对应属性,最终返回默认值0。用字符串包裹数字后,就能和实际的属性名完全匹配,从而正确获取值。
内容的提问来源于stack exchange,提问作者user3485442
相关产品推荐
相关产品推荐

