Перейти к содержимому

usort()

В мире веб-разработки PHP — это популярный язык сценариев, используемый для создания динамических и интерактивных веб-сайтов. Одна из множества функций, предлагаемых PHP, — это функция usort(), которая используется для сортировки массивов в определенном порядке с помощью пользовательской функции сравнения. В этой статье мы подробно обсудим функцию usort() и продемонстрируем, как её можно использовать для сортировки массивов по пользовательским правилам.

Что такое функция usort()?

Функция usort() — это встроенная функция PHP, которая позволяет сортировать массивы на основе ваших собственных правил сортировки. В отличие от стандартных функций сортировки, которые сортируют по значению или ключу в порядке возрастания/убывания, usort() требует функцию обратного вызова для определения логики сравнения. Она изменяет исходный массив на месте и возвращает true при успехе или false при ошибке. С помощью usort() вы можете определить собственные правила сортировки, чтобы упорядочить массивы в любом желаемом порядке.

Примечание: usort() не является устойчивой сортировкой. Если два элемента сравниваются как равные, их исходный относительный порядок не гарантируется. Для производственного кода, требующего устойчивой сортировки, рассмотрите возможность использования устойчивого алгоритма сортировки или предварительной сортировки с помощью устойчивой функции. Кроме того, usort() переиндексирует числовые ключи массива последовательно, начиная с 0.

Синтаксис

Синтаксис функции usort() выглядит следующим образом:

Синтаксис функции usort() в PHP

php
usort($array, $callback);

Здесь $array — это массив, который нужно отсортировать, а $callback — это функция обратного вызова, определяющая пользовательские правила сортировки.

Параметры и возвращаемое значение

ПараметрТипОписание
$arrayarrayМассив для сортировки.
$callbackcallableПользовательская функция сравнения.

Возвращаемое значение: Возвращает true при успехе или false при ошибке.

Пример использования

Давайте рассмотрим пример, чтобы увидеть, как работает функция usort(). Предположим, у нас есть массив имен, которые мы хотим отсортировать в алфавитном порядке, но с пользовательским правилом: все имена, начинающиеся на "J", должны идти первыми.

Как использовать функцию usort() в PHP?

php
<?php

$names = ["John", "Adam", "Jack", "Jenny", "Bob"];
usort($names, function ($a, $b) {
    if (substr($a, 0, 1) === 'J' && substr($b, 0, 1) !== 'J') {
        return -1;
    } elseif (substr($a, 0, 1) !== 'J' && substr($b, 0, 1) === 'J') {
        return 1;
    } else {
        return $a <=> $b;
    }
});

print_r($names);

В этом примере мы определяем функцию обратного вызова, которая сравнивает два имени и возвращает -1, 0 или 1 в соответствии с пользовательскими правилами сортировки. Если первая буква $a — "J", а первая буква $b — не "J", то $a идет перед $b. Если первая буква $a не "J", а первая буква $b — "J", то $b идет перед $a. Если оба имени начинаются на "J" или оба не начинаются на "J", мы используем современный оператор космического корабля PHP (<=>) для алфавитного сравнения имен.

После выполнения этого кода массив $names будет отсортирован следующим образом:

console
Array
(
    [0] => Jack
    [1] => Jenny
    [2] => John
    [3] => Adam
    [4] => Bob
)

Заключение

В этой статье мы обсудили функцию usort() в PHP и продемонстрировали, как её можно использовать для сортировки массивов по пользовательским правилам. Определив функцию обратного вызова, вы можете сортировать массивы в любом желаемом порядке на основе ваших собственных правил. Эта функция может быть особенно полезна в ситуациях, когда встроенных функций сортировки PHP недостаточно для ваших нужд. С помощью функции usort() вы получаете полный контроль над тем, как сортируются ваши массивы.

Практика

Какова цель функции usort() в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.