How to access a member of an stdClass in PHP that starts with an @
سؤال
I have some json object that I decoded, and one of the attributes starts with an "@" and I can't access the element with php because it throws an error.
[offers] => stdClass Object
(
[@attributes] => stdClass Object
(
[id] => levaka0B8a
)
)
How would I go about accessing attributes?
المحلول
You can access it by a string:
echo $obj->{'@attributes'}->id; // levaka0B8a
Or a variable:
$name = '@attributes';
echo $obj->$name->id;
For more information on how variables are defined and used, see the following docs:
- Variable Basics - Useful for learning what can be accessed as a variable without needing to use strings.
- Variable Variables - How we used the variable to act as the name for another variable. This can be dangerous so tread carefully
نصائح أخرى
You could do this:
$object->{'@attributes'}
Try to use,
$objSimpleXml->attributes()->id
Sample Code to Refer
<?php
$string = <<<XML
<a>
<foo name="one" game="lonely">1</foo>
</a>
XML;
$xml = simplexml_load_string($string);
var_dump( $xml );
foreach($xml->foo[0]->attributes() as $a => $b) {
echo $a,'="',$b,"\"\n";
}
?>
direct access is below from ircmaxwell or Richard Tuin, however you can decode JSON with second param true and recive array insted what could be an easier to access
لا تنتمي إلى StackOverflow