проблема присвоения массива переменной - PullRequest
1 голос
/ 09 января 2011

Я уверен, что это просто. У меня есть массив в объекте 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] => 57991585@N02
                            [secret] => bd66f06b49
                            [server] => 5210
                            [farm] => 6
                            [title] => 1
                            [ispublic] => 1
                            [isfriend] => 0
                            [isfamily] => 0
                        )

                )

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

                )

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

                )

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

                )

        )

)

Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 09 января 2011

Я не вижу массив в вашем примере.Тем не менее, $xml является проходимым, так что вы, вероятно, имеете в виду это.$xml->photos выбирает только первый элемент photo.Вы, вероятно, ищете

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

, который действительно возвращает массив.

1 голос
/ 09 января 2011

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

. Вы можете привести список симплексных объектов в массив, например

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

/* or retain the simplexml object */
$photosArray = $xml->children();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...