Задать вопрос
Ответы пользователя по тегу PHP
  • Есть ли такая функция сравнения?

    MrNull
    @MrNull
    Все довольно просто.
    <?php
        usort($items, function ($a, $b) {
    
            $aStartsWithNumber = preg_match('/^\s*(\d+)/u', $a, $aMatch);
            $bStartsWithNumber = preg_match('/^\s*(\d+)/u', $b, $bMatch);
    
            // Оба начинаются с числа → сравниваем по числу
            if ($aStartsWithNumber && $bStartsWithNumber) {
                return (int)$aMatch[1] <=> (int)$bMatch[1];
            }
    
            // Только $a начинается с числа → он раньше
            if ($aStartsWithNumber) {
                return -1;
            }
    
            // Только $b начинается с числа → он раньше
            if ($bStartsWithNumber) {
                return 1;
            }
    
            // Ни один не начинается с числа → сортируем по алфавиту без учета регистра
            return mb_strtolower($a) <=> mb_strtolower($b);
        });
    Ответ написан
    1 комментарий