2016-07-06 7 views
0

これは私のxmlオブジェクトです。スクリプト内のオブジェクト配列でこれを解析できません。ここでPHP SimpleXMLElementの属性にアクセスするには?

SimpleXMLElement Object(
[pagination] => SimpleXMLElement Object 
    (
     [@attributes] => Array 
      (
       [pageNumber] => 1 
       [pageSize] => 100 
       [totalAvailable] => 1 
      ) 

    ) 

[users] => SimpleXMLElement Object 
    (
     [0] => SimpleXMLElement Object 
      (
       [@attributes] => Array 
        (
         [id] => xxxxxxxx 
         [name] => xxxxx 
         [siteRole] => xxxxx 
         [lastLogin] => xxxxxx 
         [externalAuthUserId] => 
        ) 
      ) 
    ) 
) 

は私のPHPコードです:

foreach($xml2->users as $item) { 
$userName = $item->attributes()->name; 
} 

私が何か間違ったことをやっていますか?

+0

例番号5を参照してください。http://php.net/manual/en/simplexml.examples-basic.php – ymas

+0

ありがとう!愚かな間違い。出来た。 –

答えて

1

私はこの問題を解決できました。変更されたコードは次のとおりです。

foreach($xml2->users[0] as $user) { 
    $userName = $user['name']; 
} 

ymasのおかげで、彼は正しく指摘しました。

+0

@StevenMoseleyどちらの形式も技術的には正しいですが、私は '['name']'形式はそれほど精巧ではないことに同意します。しかし、それはOPの答えを完全に変えるので、境界線の編集です。 – IMSoP

+0

@IMSoP良い点、極端な編集だった。しかし、元の答えは文字列値ではなくSimpleXMLElementオブジェクトを返します。 –

+0

@StevenMoseleyいいえ、 '$ foo-> attributes() - > bar'と' $ foo ['bar'] 'はまったく同じオブジェクトを返します。 https://3v4l.org/a3tQo文字列の値が必要な場合は、文字列にキャストする必要があります。 '$ userName =(string)$ user ['name'];' – IMSoP

関連する問題