Как получить доступ к члену stdClass в PHP, который начинается с @ - PullRequest
11 голосов
/ 11 января 2011

У меня есть некоторый объект json, который я декодировал, и один из атрибутов начинается с "@", и я не могу получить доступ к элементу с помощью php, поскольку он выдает ошибку.Я иду к доступу к атрибутам?

Ответы [ 4 ]

27 голосов
/ 11 января 2011

Вы можете получить к нему доступ с помощью строки:

echo $obj->{'@attributes'}->id; // levaka0B8a

Или переменной:

$name = '@attributes';
echo $obj->$name->id;

Для получения дополнительной информации о том, как переменные определены и используются, см. Следующие документы:

  • Основы переменных - Полезно для изучения того, что может быть доступно как переменная без необходимости использования строк.
  • Переменные Переменные - Как мы использовали переменную в качестве имени для другой переменной.Это может быть опасно, поэтому действуйте осторожно
9 голосов
/ 11 января 2011

Вы можете сделать это:

$object->{'@attributes'}
3 голосов
/ 16 февраля 2011

Попробуйте использовать,

$objSimpleXml->attributes()->id

Пример кода для ссылки

<?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";
}
?> 
2 голосов
/ 11 января 2011

прямой доступ ниже от ircmaxwell или Ричарда Туина, однако вы можете декодировать JSON со вторым параметром true и получить массив массива, что может быть проще для доступа

...