PHP如何正确访问包含@等特殊字符的stdClass对象键值
PHP stdClass 特殊命名属性访问方案
你使用的zzcrewssadd->items->item[@0]写法报错有两个核心原因:
- PHP 变量必须以
$为前缀,缺少前缀会被解析为未知常量触发报错 - 原生 stdClass 对象不支持直接用方括号
[]访问属性,且@0属于非标准命名的属性名,既不能直接跟在->后书写,也不能省略引号作为裸常量使用
正确访问方式
方式1:花括号包裹字符串属性名(推荐)
PHP 原生支持用花括号包裹字符串的语法,直接访问非标命名的对象属性:
// 访问@0对应的stdClass对象 $target = $zzcrewssadd->items->item->{'@0'}; // 进一步访问@0对象内的字段,比如获取id值 $id = $zzcrewssadd->items->item->{'@0'}->id;
方式2:转数组后访问
如果更习惯数组操作,可以先将 stdClass 强制转为关联数组,再用字符串键访问:
// 将item层级的stdClass转为关联数组 $itemArr = (array) $zzcrewssadd->items->item; // 用字符串键访问@0对应的值 $target = $itemArr['@0'];
内容的提问来源于stack exchange,提问作者codejay
相关产品推荐
相关产品推荐

