2011-01-09 3 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); 

Это результат печати_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

я не понимаю, почему '[фото] => Array' не указывает массив. тем не менее, самый простой и полезный ответ я могу представить +1 :) –

+0

@Samuel Herzog Это атрибут объекта $ xml-> photos ;, но вы правы, это массив; но не в том месте. – phihag

1

Для того, чтобы вернуть все фотографии, можно сделать использовать на children()

Вы можете привести список SimpleXML объектов в массиве, как

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

/* or retain the simplexml object */ 
$photosArray = $xml->children(); 
Смежные вопросы