PHP中如何用单行代码访问对象的数字键属性?
解决PHP对象数字键属性的访问问题
嘿,这个问题我之前也碰到过!PHP里对象的属性如果是纯数字或者数字开头的字符串键,直接用->属性名的常规写法会触发语法错误,因为这类键不符合PHP标识符的命名规则(标识符必须以字母、下划线开头)。不过不用foreach也有简单的单行写法解决:
对应#1:获取值'4'
用花括号把数字键包起来就行,两种写法都有效:
echo $LObj['bonus']->{0}; // 或者用字符串形式的键 echo $LObj['bonus']->{'0'};
对应#2:获取值1
同样用花括号包裹的方式,任选一种即可:
echo $LObj['bonus']->{1}; // 或者 echo $LObj['bonus']->{'1'};
为什么#3能正常访问?
因为bonus是符合PHP标识符规则的属性名(以字母开头),所以直接用->bonus的语法完全没问题。而数字键不属于合法标识符范畴,必须通过花括号的方式告诉PHP要解析这个键名。
额外提个小技巧:如果属性名存在变量里,也可以直接用变量访问,比如:
$attr = '0'; echo $LObj['bonus']->$attr; // 同样能输出'4'
内容的提问来源于stack exchange,提问作者Ray Macz
相关产品推荐
相关产品推荐

