2011-01-09 17 views
1

これは単純なものだと確信しています。私は、simplexmlオブジェクトの配列を持っています。配列に変数を代入しようとすると、配列の最初のインデックスだけが割り当てられます。配列全体をどのように割り当てることができますか?これは私のコードです。問題を変数に代入する

$xml = simplexml_load_string(FlickrUtils::getMyPhotos("flickr.photos.search", $_SESSION['token'])); 

$photosArray = $xml->photos; 
//$photosArray = $xml->photos->photo; 

//echo gettype($photosArray); 
print_r($photosArray); 

これはprint_r($ photosArray)の結果です。

SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [page] => 1 
      [pages] => 1 
      [perpage] => 100 
      [total] => 4 
     ) 

    [photo] => Array 
     (
      [0] => SimpleXMLElement Object 
       (
        [@attributes] => Array 
         (
          [id] => 5335626037 
          [owner] => [email protected] 
          [secret] => bd66f06b49 
          [server] => 5210 
          [farm] => 6 
          [title] => 1 
          [ispublic] => 1 
          [isfriend] => 0 
          [isfamily] => 0 
         ) 

       ) 

      [1] => SimpleXMLElement Object 
       (
        [@attributes] => Array 
         (
          [id] => 5336238676 
          [owner] => [email protected] 
          [secret] => 898dffa011 
          [server] => 5286 
          [farm] => 6 
          [title] => 2 
          [ispublic] => 1 
          [isfriend] => 0 
          [isfamily] => 0 
         ) 

       ) 

      [2] => SimpleXMLElement Object 
       (
        [@attributes] => Array 
         (
          [id] => 5335625381 
          [owner] => [email protected] 
          [secret] => 60a0c84597 
          [server] => 5126 
          [farm] => 6 
          [title] => 4 
          [ispublic] => 1 
          [isfriend] => 0 
          [isfamily] => 0 
         ) 

       ) 

      [3] => SimpleXMLElement Object 
       (
        [@attributes] => Array 
         (
          [id] => 5335625195 
          [owner] => [email protected] 
          [secret] => 49348c1e8b 
          [server] => 5126 
          [farm] => 6 
          [title] => 3 
          [ispublic] => 1 
          [isfriend] => 0 
          [isfamily] => 0 
         ) 

       ) 

     ) 

) 

ありがとうございました!

答えて

3

あなたの例では配列が表示されません。しかし、$xmlは横断可能なので、おそらくそれを意味します。 $xml->photosは、最初のphoto要素のみを選択します。あなたは、おそらく実際に配列を返す

$photosArray = $xml->xpath('//photo'); 

を探しています。すべての写真を戻すために

+0

のように、アレイにSimpleXMLのオブジェクトのリストをキャストすることができますchildren()

で使用することができますなぜ '[写真] => 「配列」は配列を示さない。それにもかかわらず、最も簡単で便利な答えは私が想像することができます+1: –

+0

@サミュエルHerzogそれはオブジェクト$ xml->写真の属性ですが、あなたは正しいです、それは配列です。しかし、間違った場所で。 – phihag

1

が、私は見ていない

$photosArray = (array)$xml->children(); 

/* or retain the simplexml object */ 
$photosArray = $xml->children(); 
関連する問題