Как отсортировать многомерный массив PHP со сложными условиями?
array_multisort(
    array_column($array, 'unread_pm'), SORT_DESC, 
    array_column($array, 'last_date'), SORT_DESC, 
    $array
);

Если вы делаете выборку из БД то сортировку можно сделать в SQL-запросе
SELECT ... ORDER BY unread_pm DESC, last_date DESC
usort + функция, в которой задано отношение больше/меньше/равно для двух элементов.