Доброго времени суток, пришлось отсортировать массив вида
Array
(
[0] => Models\Project Object
(
[id:Models\Project:private] => 47
[data:Models\Project:private] => Array
(
[id_project] => 47
[title] => Повседневщина
[id] => 47
[color] => green
[id_user] => 32
[task_count] => 2
[task_lose] => 0
[task_active] => 2
)
)
[1] => Models\Project Object
(
[id:Models\Project:private] => 48
[data:Models\Project:private] => Array
(
[id_project] => 48
[title] => Для работы
[id] => 48
[color] => yellow
[id_user] => 32
[task_count] => 2
[task_lose] => 0
[task_active] => 2
)
)
[2] => Models\Project Object
(
[id:Models\Project:private] => 49
[data:Models\Project:private] => Array
(
[id_project] => 49
[title] => Изменения скрипта Задач
[id] => 49
[color] => red
[id_user] => 32
[task_count] => 2
[task_lose] => 0
[task_active] => 1
)
)
)
что аж призадумался, раньше достаточно было сортировки в SQL, а тут так получилось что нужно сначала получить данные, а потом отсортировать готовый многомерный, та еще и ассоциативный массив.
А отсортировать нужно так, сначала по свойству
task_lose, потом
tasc_active, и в конце
task_count.
Моё решение:
$projects = [];
$count['tasc_active'] = $count['task_lose'] = $count['task_count'] = [];
$q = DB::me()->query("SELECT `id` FROM `projects`");
$res = $q->fetchAll();
$i = 0;
foreach ($res as $project) {
$projects[$i] = new Project($project['id']);
$count['task_lose'][$i] = $projects[$i]->task_lose;
$count['tasc_active'][$i] = $projects[$i]->task_active;
$count['task_count'][$i] = $projects[$i]->task_count;
$i++;
}
array_multisort($count['task_lose'], SORT_DESC, $count['tasc_active'], SORT_DESC, $count['task_count'], SORT_DESC, $projects);
Работать, работает, но может есть решение лучше?