Как пересортировать массив на php

Есть такой массив:

   [0] => Array
                (
                    [0] => Array
                        (
                            [ID] => 11
                            [FORM_NAME] => Форма 1
                            [ITEMS] => Array
                                (
                                    [0] => Array
                                        (
                                            [ID] => 1
                                            [TSX_0] => 17.03.2020
                                            [FORM_ID] => 11
                                        )
                                )
                        )

                    [1] => Array
                        (
                            [ID] => 11
                            [FORM_NAME] => Форма 1
                            [ITEMS] => Array
                                (
                                    [1] => Array
                                        (
                                            [ID] => 2
                                            [TSX_0] => 17.03.2020
                                            [FORM_ID] => 11
                                        )
                                )
                        )
                    [2] => Array
                        (
                            [ID] => 12
                            [FORM_NAME] => Форма 2
                            [ITEMS] => Array
                                (
                                    [2] => Array
                                        (
                                            [ID] => 3
                                            [TSX_0] => 17.03.2020
                                            [FORM_ID] => 12
                                        )
                                )
                        )
                )

Мне нужно сгруппировать одинаковые формы так:

  [0] => Array
                (
                    [0] => Array
                        (
                            [ID] => 11
                            [FORM_NAME] => Форма 1
                            [ITEMS] => Array
                                (
                                    [0] => Array
                                        (
                                            [ID] => 1
                                            [TSX_0] => 17.03.2020
                                            [FORM_ID] => 11
                                        )

                                    [1] => Array
                                        (
                                            [ID] => 2
                                            [TSX_0] => 17.03.2020
                                            [FORM_ID] => 11
                                        )
                                )
                        )
                    [1] => Array
                        (
                            [ID] => 12
                            [FORM_NAME] => Форма 2
                            [ITEMS] => Array
                                (
                                    [2] => Array
                                        (
                                            [ID] => 3
                                            [TSX_0] => 17.03.2020
                                            [FORM_ID] => 12
                                        )
                                )
                        )
                )

Ответы (1 шт):

Автор решения: Denis640Kb
<?php
$arr = Array(
    Array(
        "ID" => "11",
        "FORM_NAME" => "Форма 1",
        "ITEMS" => Array(
            Array(
                "ID" => 1,
                "TSX_0" => "17.03.2020",
                "FORM_ID" => 11
            )
        )
    ),
    Array(
        "ID" => 11,
        "FORM_NAME" => "Форма 1",
        "ITEMS" => Array(
            Array(
                "ID" => 2,
                "TSX_0" => "17.03.2020",
                "FORM_ID" => 11
            )
        )
    ),
    Array(
        "ID" => 12,
        "FORM_NAME" => "Форма 2",
        "ITEMS" => Array(
            Array(
                "ID" => 3,
                "TSX_0" => "17.03.2020",
                "FORM_ID" => 12
            )
        )
    )
);

$NewArr = [];
foreach ($arr as $key=>$item){
    if($key == 0){
        $NewArr[] = $item;
    } else {
        foreach($NewArr as $key1=>$item1){
            $trig = 0;
            if (in_array($item['ID'], $item1)){
                $NewArr[$key1]['ITEMS'][] = $item['ITEMS'][0];
            } else {
                $trig = 1;
            }
        }
        if ($trig == 1){
            $NewArr[] = $item;
        }
    }
}
print_r($NewArr);
→ Ссылка