13

デコードしたjsonオブジェクトがあり、属性の1つが「@」で始まり、エラーがスローされるため、phpで要素にアクセスできません。

                    [offers] => stdClass Object
                    (
                        [@attributes] => stdClass Object
                            (
                                [id] => levaka0B8a
                            )
                    )

属性にアクセスするにはどうすればよいですか?

4

4 に答える 4

32

文字列でアクセスできます。

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

または変数:

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

変数の定義と使用方法の詳細については、次のドキュメントを参照してください。

  • 変数の基本-文字列を使用せずに変数としてアクセスできるものを学習するのに役立ちます。
  • 変数変数-別の変数の名前として機能するために変数をどのように使用したか。これは危険な場合があるので、慎重に踏みます
于 2011-01-11T17:05:22.163 に答える
9

あなたはこれを行うことができます:

$object->{'@attributes'}
于 2011-01-11T17:04:36.647 に答える
3

使ってみて、

$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";
}
?> 
于 2011-02-16T10:31:18.773 に答える
2

以下にircmaxwellまたはRichardTuinからの直接アクセスがありますが、2番目のパラメーターがtrueでJSONをデコードし、より簡単にアクセスできる配列を受け取ることができます。

于 2011-01-11T17:12:32.527 に答える