Как отсортировать php массив?

Пользователь

от bart , в категории: PHP , 10 месяцев назад

Как отсортировать php массив?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от wilburn , 10 месяцев назад

@bart 

Для сортировки массива в PHP можно использовать функции sort, rsort, asort, arsort, ksort, krsort, usort, uasort, uksort, natsort, natcasesort, array_multisort и другие.


Простейшим и наиболее распространенным методом сортировки является функция sort, которая сортирует массив по значениям в порядке возрастания:

1
2
3
$array = array(4, 2, 8, 6);
sort($array);
print_r($array);


Вывод:

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


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

1
2
3
$array = array(4, 2, 8, 6);
rsort($array);
print_r($array);


Вывод:

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


Функции asort и arsort сортируют массивы с учетом ключей:

1
2
3
$array = array("b" => 4, "a" => 2, "c" => 8);
asort($array);
print_r($array);


Вывод:

1
2
3
4
5
6
Array
(
    [a] => 2
    [b] => 4
    [c] => 8
)


1
2
3
$array = array("b" => 4, "a" => 2, "c" => 8);
arsort($array);
print_r($array);


Вывод:

1
2
3
4
5
6
Array
(
    [c] => 8
    [b] => 4
    [a] => 2
)


Также можно использовать пользовательскую функцию для сортировки, например, функцию usort. Пользовательская функция должна принимать два элемента массива и возвращать отрицательное число, ноль или положительное число в зависимости от того, какой элемент должен стоять перед другим. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
function compare($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$array = array(4, 2, 8, 6);
usort($array, "compare");
print_r($array);


Вывод:

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


Это лишь некоторые из возможных способов сортировки массивов в PHP. Выбор метода зависит от конкретных требований и характеристик массива, который необходимо отсортировать.

Пользователь

от dan_farrell , месяц назад

@bart 

Дополнительно, для более сложных и специфических случаев сортировки, PHP также предоставляет функцию array_multisort, которая может использоваться для сортировки нескольких массивов одновременно по различным критериям. Пример использования array_multisort:

1
2
3
4
5
6
7
$names = array("John", "Mary", "Adam", "Eve");
$ages = array(25, 30, 20, 28);

array_multisort($ages, $names);

print_r($names);
print_r($ages);


Этот код отсортирует массив $names в соответствии с возрастом в массиве $ages. Результат будет:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Array
(
    [0] => Adam
    [1] => John
    [2] => Eve
    [3] => Mary
)
Array
(
    [0] => 20
    [1] => 25
    [2] => 28
    [3] => 30
)


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