Artur3194
@Artur3194

Слияние массивов без нарушения структуры?

Доброго времени суток!
Есть вот такой объект с массивами.
608692c4345a0292405393.png
Нужно все эти массивы обеднить в один, в таком порядке как они разбиты по группам.
Делаю так:
foreach($orderGrouped as $group){
       foreach($group as $groupItem){
           array_push($filteredArray, $groupItem);
       }
    }

Но порядок нарушается.
608692cf719ea505621998.png
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Кажется, что должно хватить вызова ksort($orderGrouped, SORT_NUMERIC) перед циклом.
Foreach сам назло вам ничего не пересортировывает - как пришло, так и обрабатывает. Порядок ключей в объекте JS не гарантирован, так что, скорее всего, он вам портит малину. Можете убедиться, если сделаете var_dump($orderGrouped) в самом начале - наверняка, порядок будет нарушен уже там.

Ну и если у вас свежая версия PHP, то код можно сократить до такого:
$filteredArray = [];
ksort($orderGrouped, SORT_NUMERIC);
foreach($orderGrouped as $group){
   array_push($filteredArray, ...$group);
}

А то в вашем варианте array_push лишний и достаточно просто $filteredArray[] = $groupItem.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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