W3docs

uasort()

At the heart of most programming tasks lies the need to sort data. Sorting data enables you to access and display it more efficiently, which can save you time

Сортировка массивов в PHP с помощью uasort()

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

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

Что такое uasort()?

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

Эта функция особенно полезна, когда нужно сортировать ассоциативные массивы или многомерные массивы, поскольку она позволяет указать, какие значения сравнивать и как именно их сравнивать.

Синтаксис uasort()

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

Синтаксис uasort()

uasort(array &$array, callable $comparison_function): bool

Разберём различные части этого синтаксиса:

  • array &$array: это массив, который нужно отсортировать. Символ & перед переменной $array указывает, что это ссылка на исходный массив, а значит, любые изменения, внесённые в отсортированный массив, также отразятся и в исходном массиве.
  • callable $comparison_function: это функция сравнения, которая будет применяться к элементам массива. Функция сравнения должна принимать два аргумента, $a и $b, которые представляют сравниваемые элементы. Функция должна возвращать целое число, которое указывает на соотношение между $a и $b.
  • bool: это тип возвращаемого значения функции uasort(). Она возвращает true в случае успеха и false в случае неудачи.

Параметры функции сравнения

Функция сравнения, используемая в uasort(), должна возвращать целое число, которое указывает на соотношение между двумя значениями. Функция должна принимать два аргумента, $a и $b, которые представляют сравниваемые элементы. Возвращаемое значение должно быть следующим:

  • Если $a больше $b, функция должна вернуть положительное целое число.
  • Если $a равно $b, функция должна вернуть 0.
  • Если $a меньше $b, функция должна вернуть отрицательное целое число.

Примеры использования uasort()

Давайте рассмотрим несколько примеров того, как uasort() можно использовать для сортировки массивов в PHP.

Пример 1: Сортировка простого массива

Предположим, у нас есть следующий массив:

Массив PHP

$array = array(3, 1, 4, 1, 5, 9, 2, 6, 5, 3);

Чтобы отсортировать этот массив по возрастанию, мы можем использовать следующую функцию сравнения:

Сортировка массива в PHP

function compare($a, $b) {
    return ($a < $b) ? -1 : 1;
}

Затем мы можем вызвать функцию uasort() следующим образом:

Сортировка простого массива с помощью функции uasort()

<?php

$array = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3];

function compare($a, $b)
{
    return $a < $b ? -1 : 1;
}

uasort($array, "compare");

print_r($array);

Это отсортирует массив по возрастанию следующим образом:


Array
(
    [3] => 1
    [1] => 1
    [6] => 2
    [9] => 3
    [0] => 3
    [2] => 4
    [8] => 5
    [4] => 5
    [7] => 6
    [5] => 9
)

Пример 2: Сортировка ассоциативного массива по значению

Предположим, у нас есть следующий ассоциативный массив:

Ассоциативный массив PHP

$array = array(
    "John" => 32,
    "Mary" => 28,
    "Bob" => 45,
    "Jane" => 28,
    "David" => 37
);

Чтобы отсортировать этот массив по значению по возрастанию, мы можем использовать следующую функцию сравнения:

Сортировка массива в PHP с использованием функции сравнения

function compare($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

Затем мы можем вызвать функцию asort() следующим образом:

Сортировка ассоциативного массива по значению с помощью функции uasort() в PHP

<?php

$array = [
    "John" => 32,
    "Mary" => 28,
    "Bob" => 45,
    "Jane" => 28,
    "David" => 37,
];

function compare($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return $a < $b ? -1 : 1;
}

uasort($array, "compare");

print_r($array);

Это отсортирует массив по значению по возрастанию следующим образом:


array(
    "Mary" => 28,
    "Jane" => 28,
    "John" => 32,
    "David" => 37,
    "Bob" => 45
);

Пример 3: Сортировка многомерного массива по значению

Предположим, у нас есть следующий многомерный массив:

Многомерный массив в PHP

<?php

$array = [["John", 32], ["Mary", 28], ["Bob", 45], ["Jane", 28], ["David", 37]];

Чтобы отсортировать этот массив по второму значению в каждом подмассиве по возрастанию, мы можем использовать следующую функцию сравнения:

Сортировка массива по второму значению в каждом подмассиве в PHP с использованием функции сравнения

function compare($a, $b) {
    if ($a[1] == $b[1]) {
        return 0;
    }
    return ($a[1] < $b[1]) ? -1 : 1;
}

Затем мы можем вызвать функцию uasort() следующим образом:

Пример сортировки многомерного массива по значению в PHP

<?php

$array = [["John", 32], ["Mary", 28], ["Bob", 45], ["Jane", 28], ["David", 37]];

function compare($a, $b) {
    if ($a[1] == $b[1]) {
        return 0;
    }
    return ($a[1] < $b[1]) ? -1 : 1;
}

uasort($array, "compare");

print_r($array);

Это отсортирует массив по второму значению в каждом подмассиве по возрастанию следующим образом:


Array
(
    [1] => Array
        (
            [0] => Mary
            [1] => 28
        )

    [3] => Array
        (
            [0] => Jane
            [1] => 28
        )

    [0] => Array
        (
            [0] => John
            [1] => 32
        )

    [4] => Array
        (
            [0] => David
            [1] => 37
        )

    [2] => Array
        (
            [0] => Bob
            [1] => 45
        )

)

Заключение

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

Практика

Практика

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