Как пересортировать массив на 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);