Сортировка по email, затем сортировка по date
usort
usort($allTickets, function($a, $b) {
return [$a['email'], $a['date']]
<=>
[$b['email'], $b['date']];
});
print_r($allTickets);
usort (PHP 7.4+)
<?php
usort($allTickets, fn($a, $b) =>
[$a['email'], $a['date']]
<=>
[$b['email'], $b['date']]
);
print_r($allTickets);
array_multisort
<?php
array_multisort(
array_column($allTickets, 'email'),
array_column($allTickets, 'date'),
$allTickets
);
print_r($allTickets);
Должно вывести так
В приведённом примере не ясно почему ccc@ находится в начале, если сперва мы делали сортировку по email?
но групировались по email.
группировка это агрегационная функция, и в вашем примере того как должно получиться нет группировки.
p.s. Если данные получаете из СУБД то сортировку можно сделать сразу в базе
SELECT ... ORDER BY email ASC, date ASC