Задать вопрос
Artur3194
@Artur3194

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

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

Но порядок нарушается.
608692cf719ea505621998.png
  • Вопрос задан
  • 107 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽