@maccamset

PHP. Как изменить порядок элементов в объекте SimpleXMLElement Object?

Имеется исходный объект SimpleXMLElement Object вот такого типа. Получаю со стороннего сервиса по API. Задача - поменять порядок на уровне row. Остальные уровни без изменения
сейчас так [row] => Array ( [0 =>...val0...] ,[1 =>...val1...],[2 =>...val2...] )
нужно типо этого [row] => Array ( [0=>...val1...] ,[1=>...val2...],[2=>...val0...] )
кол-во элементов, типы, данные не изменятся, только порядок значений в массиве row. Новый порядок задан другим массивом такого же размера. Новый порядок задан вручную, т.е. не укладывается в какой-либо алгоритм сортировки.

получилось сделать через json_encode массив и в нем поменять порядок элементов
$brands_json = json_encode($brands);
$brands_array = json_decode($brands_json,TRUE);

Но собрать новый объект SimpleXMLElement Object из массива такой же структуры как исходный не выходит.
Пробую как описано тут
Возможно есть более простой способ решить мой вопрос?

исходный объект
SimpleXMLElement Object
(
    [row] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [brand] => ABARTH
                            [code] => CFiat112013
                            [frameexample] => 
                 
                        )

                    [features] => SimpleXMLElement Object
                        (
                            [feature] => Array
                                (
                                    [0] => SimpleXMLElement Object
                                        (
                                            [@attributes] => Array
                                                (
                                                    [example] => ZFA31200000451262
                                                    [name] => vinsearch
                                                )

                                        )

                                    [1] => SimpleXMLElement Object
                                        (
                                            [@attributes] => Array
                                                (
                                                    [name] => quickgroups
                                                )

                                        )

                                )

                        )

                )

            [1] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [brand] => ALFA ROMEO
                            [code] => RFiat112013
                            [frameexample] => 
                        )

                    [features] => SimpleXMLElement Object
                        (
                            [feature] => Array
                                (
                                    [0] => SimpleXMLElement Object
                                        (
                                            [@attributes] => Array
                                                (
                                                    [example] => ZAR93700003090729
                                                    [name] => vinsearch
                                                )

                                        )

                                    [1] => SimpleXMLElement Object
                                        (
                                            [@attributes] => Array
                                                (
                                                    [name] => quickgroups
                                                )

                                        )

                                )

                        )

                )

            [2] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [brand] => AUDI
                            [code] => AU1161
                            [frameexample] => 
                        )

                    [features] => SimpleXMLElement Object
                        (
                            [feature] => Array
                                (
                                    [0] => SimpleXMLElement Object
                                        (
                                            [@attributes] => Array
                                                (
                                                    [example] => WAUZZZ4M0HD042149
                                                    [name] => vinsearch
                                                )

                                        )

                                    [1] => SimpleXMLElement Object
                                        (
                                            [@attributes] => Array
                                                (
                                                    [name] => wizardsearch2
                                                )

                                        )

                                    [2] => SimpleXMLElement Object
                                        (
                                            [@attributes] => Array
                                                (
                                                    [name] => quickgroups
                                                )

                                        )

                                )

                        )

                )

  • Вопрос задан
  • 402 просмотра
Пригласить эксперта
Ответы на вопрос 3
Используйте array_multisort
Ответ написан
Комментировать
@maccamset Автор вопроса
с помощью array_multisort получу массив с новым порядком. Это и так получилось через пару foreach.
Так понял что для объектов нет подобной функции как array_multisort, которая выдавала бы также объект.
Вопрос в том как собрать новый объект с такой вложенностью из массива.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы