Home  >  Article  >  Backend Development  >  How to sort a two-dimensional array in php

How to sort a two-dimensional array in php

PHPz
PHPzOriginal
2023-04-17 16:37:235049browse

In development, we often need to sort data for better presentation and use. For two-dimensional arrays, sorting can be performed according to a certain data field. This article will introduce how to use PHP to sort a two-dimensional array.

1. Use the sort() function to sort a two-dimensional array

sort() is a built-in function of PHP that can sort the values ​​in the array in ascending order. When sorting a two-dimensional array, the sort() function sorts by the first field of the array by default. For example, we have a two-dimensional array:

$arr = array(
     array('id'=>2,'name'=>'li', 'age'=>20),
     array('id'=>1,'name'=>'zhang', 'age'=>22),
     array('id'=>3,'name'=>'wang', 'age'=>18)
);

We can use the sort() function to sort by the id field:

sort($arr);
print_r($arr);

The output result is:

Array
(
    [0] => Array
        (
            [age] => 18
            [id] => 3
            [name] => wang
        )

    [1] => Array
        (
            [age] => 20
            [id] => 2
            [name] => li
        )

    [2] => Array
        (
            [age] => 22
            [id] => 1
            [name] => zhang
        )

)

You can see Out, after sorting according to the id field, the elements in the array are arranged in ascending order.

2. Use the usort() function to sort the two-dimensional array

The sort() function can only sort the first field of the array. If you want to sort by other fields, you need to Use the usort() function. The usort() function needs to pass in a custom callback function to specify the sorting rules. For example, we want to sort by the age field:

function cmp($a, $b)
{
    if ($a['age'] == $b['age']) {
        return 0;
    }
    return ($a['age'] <$ b[&#39;age&#39;]) ? -1 : 1;
}

usort($arr, "cmp");
print_r($arr);

The output result is:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => wang
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => li
            [age] => 20
        )

    [2] => Array
        (
            [id] => 1
            [name] => zhang
            [age] => 22
        )

)

It can be seen that after sorting by the age field, the elements in the array are arranged in ascending order of age.

3. Use array_multisort() function to sort two-dimensional arrays

The array_multisort() function is a very powerful sorting function that can sort two-dimensional arrays according to multiple conditions. If you want to sort by multiple fields, you can use the array_multisort() function. For example, we need to sort by the age field first. If the age is the same, then sort by the id:

$ages = array();
$ids = array();
foreach ($arr as $key => $value) {
    $ages[$key] = $value['age'];
    $ids[$key] = $value['id'];
}
array_multisort($ages, SORT_ASC, $ids, SORT_ASC, $arr);

print_r($arr);

The output result is:

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => wang
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => li
            [age] => 20
        )

    [2] => Array
        (
            [id] => 1
            [name] => zhang
            [age] => 22
        )

)

It can be seen that after sorting by the age field and the id field , the elements in the array are arranged in ascending order by age, and if the age is the same, they are arranged in ascending order by id.

Summary:

This article introduces three methods to sort two-dimensional arrays, using the sort() function, usort() function and array_multisort() function. In development, which method to choose depends on specific needs. Hope this article is helpful to everyone.

The above is the detailed content of How to sort a two-dimensional array in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn