目标:按编号从PHP对象中检索数据元素.
这是对象的print_r($ data):
stdClass Object
(
[0] => stdClass Object
(
[TheKey] => 1456
[ThingName] => Malibu
[ThingID] => 7037
[MemberOf] => California
[ListID] => 7035
[UserID] => 157
[UserName] => John Doe
)
)
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何从中汲取价值.这只是一个多记录对象的记录,应该是id而不是名字.
这些是一些失败的尝试来说明目标是什么:
echo $data -> 0 -> UserName;
echo $data[0] -> UserName;
Run Code Online (Sandbox Code Playgroud)
Bol*_*ock 33
通常,PHP变量名称不能以数字开头.你不能$data
像stdClass
没有实现一样访问数组ArrayAccess
- 它只是一个普通的基类.
但是,在这种情况下,您可以尝试通过其数字名称访问对象属性,如下所示:
echo $data->{'0'}->UserName;
Run Code Online (Sandbox Code Playgroud)
我能想到为什么Spudley的答案会导致错误的唯一原因是因为你运行的是PHP 4,它不支持使用foreach
迭代对象.
BoltClock建议使用"$ data - > {'0'} - > UserName"显然不再适用于PHP 5.
我遇到了同样的问题,我发现current()可以像这样得到那个带编号的类元素......
echo current($data)->UserName;
Run Code Online (Sandbox Code Playgroud)
或者,如果这不起作用(取决于对象),您可能需要执行另一个current()调用,如下所示:
echo current(current($data))->UserName;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20932 次 |
最近记录: |