<?php
$array = [
["division" => "division1"],
["division" => "division2"],
["division" => "division1", "department" => "department10"],
["division" => "division1", "department" => null, "team" => "team91"],
["division" => "division1", "department" => "department10", "team" => "team85"],
["division" => "division3", "department" => "department999"],
["division" => "division2", "department" => "department33"],
["division" => "division1", "department" => null, "team" => "team92"]
];
array_multisort(array_map('count', $array), SORT_DESC, $array);
$result = [];
foreach ($array as $row) {
foreach ($result as $saved) {
if (!array_diff_assoc($row, $saved)) {
continue 2;
}
}
$result[] = $row;
}
var_export($result);
- Output for 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- array (
0 =>
array (
'division' => 'division1',
'department' => NULL,
'team' => 'team91',
),
1 =>
array (
'division' => 'division1',
'department' => NULL,
'team' => 'team92',
),
2 =>
array (
'division' => 'division1',
'department' => 'department10',
'team' => 'team85',
),
3 =>
array (
'division' => 'division2',
'department' => 'department33',
),
4 =>
array (
'division' => 'division3',
'department' => 'department999',
),
)
preferences:
57.84 ms | 408 KiB | 5 Q