Goal: retrieve an element of data from within a PHP object by number.
This is the print_r($data) of the object:
stdClass Object
(
[0] => stdCl
BoltClock's suggestion to use "$data->{'0'}->UserName" apparently no longer works with PHP 5.
I had the same problem and I found that current() will work to get that numbered class element like this...
echo current($data)->UserName;
Or if that doesn't work (depending on the object) you may need to do another current() call like this:
echo current(current($data))->UserName;
this works for PHP5+
echo $data[0]->UserName;
or
foreach ($data as $data){
echo $data->UserName;
}
or as suggested by @orrd
current($data)->UserName works great too.
Normally, PHP variable names can't start with a digit. You can't access $data
as an array either as stdClass
does not implement ArrayAccess
— it's just a normal base class.
However, in cases like this you can try accessing the object attribute by its numeric name like so:
echo $data->{'0'}->UserName;
The only reason I can think of why Spudley's answer would cause an error is because you're running PHP 4, which doesn't support using foreach
to iterate objects.
try this:
echo $data[0]['UserName'];
According to the manual, objects are not meant to be used that way. The comments on this page do provide a way around if that's a must-have for you. You could also simply rely on arrays if you are just using the object for properties (and not behaviours).
Have you tried a foreach()
loop? That should give you all the accessible elements, and the
keys it returns may give you a better clue as to how to access them directly.