Как отсортировать многомерный массив по значению в PHP


Deprecated: Function create_function() is deprecated in /home/worldhel/public_html/wp-content/plugins/codecolorer/lib/geshi.php on line 4698

Мы можем использовать несколько разных методов для этого. Один из способов использования функции usort().

Другой способ — просто определить значения и создать другой массив со значениями, а затем использовать его в функции array_multisort() .

Используя мультисортный метод, мы можем легко отсортировать многомерный массив на основе его одного или нескольких значений. Давайте посмотрим, как мы можем использовать оба этих метода.

1.Сортировка с использованием usort.

Первый способ сортировки массива — использование функции usort(). Вот код, который мы можем использовать для выполнения этого вида:

1
2
3
4
5
function cmp($a, $b)
{
    return strcmp($a["name"], $b["name"]);
}
usort($array, "cmp");

Функция usort() сортирует $array с помощью функции сравнения (cmp), которую мы создали. Вышеприведенный код может использоваться для сортировки многомерного массива на основе значения столбца имен массива. Это простой способ сортировки многомерного массива на основе значения одного ключа.

Если вы хотите отсортировать массив на основе значений нескольких ключей, тогда вам, возможно, придется написать некоторую сложную логику в функции обратного вызова, чтобы сделать это. Однако существует альтернативный способ использования функции array_multisort(). Array_multisort() может использоваться для сортировки сразу нескольких массивов или многомерного массива одним или несколькими измерениями.

2.Сортировка с использованием array_multisort по значения 1-го ключа.

Теперь посмотрим как использовать функцию array_multisort() чтобы выполнить ту же сортировку, что мы использовали выше.

1
2
3
4
5
6
7
8
$array_name = [];

foreach ($array as $key => $row)
{
    $array_name[$key] = $row['name'];
}

array_multisort($array_name, SORT_ASC, $array);

3.Сортировка с использованием array_multisort по значению 2-х ключей.

Теперь давайте посмотрим, как мы можем сортировать один и тот же массив с помощью значений 2-х ключей массива. В этом примере мы будем сортировать по значению по возрастанию, по убыванию имени.

1
2
3
4
5
6
7
8
9
$array_value = [];
$array_name = [];

foreach ($array as $key => $row)
{
    $array_value[$key] = $row['value'];
    $array_name[$key] = $row['name'];
}
array_multisort($array_value, SORT_ASC, $array_name, SORT_DESC, $array);

Этот код сначала сортирует $array_values восходящий, $array_name нисходящий, а затем $array использует оба сортированных массива. Используя этот метод, мы можем сортировать многомерный массив в зависимости от значений нескольких разных ключей.

4.Сортировка с использованием array_multisort по значению с 3-я ключами

Теперь давайте посмотрим, как мы можем сортировать один и тот же массив по 3-я ключами. В этом примере мы будем сортировать по убыванию, по убыванию и имени по возрастанию.

1
2
3
4
5
6
7
8
9
10
11
$array_value = [];
$array_name = [];
$array_order = [];

foreach ($array as $key => $row)
{
    $array_value[$key] = $row['value'];
    $array_name[$key] = $row['name'];
    $array_order[$key] = $row['order'];
}
array_multisort($array_value, SORT_DESC, $array_order, SORT_DESC, $array_name, SORT_ASC, $array);

Этот код сначала сортирует $array_values нисходящий, $array_order нисходящий, $array_name восходящий, а затем $array использует эти отсортированные массивы. Используя этот метод, мы можем сортировать многомерный массив в зависимости от значений нескольких разных ключей. Этот метод может быть расширен для сортировки массива по любому числу значений.

2 thoughts to “Как отсортировать многомерный массив по значению в PHP”

    1. Юлия, спасибо, за добрый отзыв! Мы действительно стараемся, чтобы информация была актуальной и при этом понятной.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *