PHP кастомная сортировка

Home » PHP » PHP кастомная сортировка
PHP Комментариев нет
Пример кастомной сложной сортировки по множеству параметров function location_sort($a,$b){ $in_a = $in_b = $up = 0; $status_arr = array('свободен' => 0, 'резерв' => 0,'забронировано' => 0,'продано' => 1); $a->content_status = trim($a->content_status); $b->content_status = trim($b->content_status); // Проверка на неопределенный статус $in_a = empty($status_arr[$a->content_status]) ? '1' : '0'; $in_b = empty($status_arr[$b->content_status]) ? '1' : '0'; if($in_a != $in_b) return $in_b - $in_a; // Проверка на сортировку по статусу из массива $status_arr $in_a = $status_arr[$a->content_status] < $status_arr[$b->content_status] ? '1' : '0'; $in_b = $status_arr[$a->content_status] > $status_arr[$b->content_status] ? '1' : '0'; if($in_a != $in_b) return $in_b - $in_a; // Проверка на Москву $in_a = mb_strtoupper(trim($a->content_nalichie)) == 'МОСКВА' ? '1' : '0'; $in_b = mb_strtoupper(trim($b->content_nalichie)) == 'МОСКВА' ? '1' : '0'; if($in_a != $in_b) return $in_b - $in_a; // Проверка на числовые данные в городе $in_a = ereg("[0-9]+",$a->content_nalichie,$reg) ? '0' : '1'; $in_b = ereg("[0-9]+",$b->content_nalichie,$reg) ? '0' : '1'; if($in_a != $in_b) return $in_b - $in_a; // Проверка на город по алфавиту $up = strncmp(mb_strtoupper($a->content_nalichie),mb_strtoupper($b->content_nalichie),5); if($up != 0) return $up; /*$location_arr = array("Ивантеевка","Москва","Волоколамское"); foreach($location_arr as $e){ if(!$in_a && strpos(mb_strtoupper($a->content_nalichie),mb_strtoupper($e)) !== false){ $in_a = 1; } if(!$in_b && strpos(mb_strtoupper($b->content_nalichie),mb_strtoupper($e)) !== false){ $in_b = 1; } }*/ //$up = $in_b - $in_a; //:echo mb_strtoupper($a->content_nalichie).' '.($up); return 0; } usort($list_contents,'location_sort');