Home > Backend Development > PHP Tutorial > Sorting multidimensional arrays using PHP

Sorting multidimensional arrays using PHP

WBOY
Release: 2023-06-06 08:34:02
Original
1713 people have browsed it

In PHP programming, we often need to sort multi-dimensional arrays to meet different needs, such as sorting by price, sorting in alphabetical order, etc. However, sorting multidimensional arrays is more complex than one-dimensional arrays. This article will introduce how to use PHP to sort multi-dimensional arrays.

  1. PHP’s sorting function

First of all, we need to understand the sorting functions in PHP: sort(), rsort(), asort(), arsort(), ksort (), krsort(), uksort(), usort(). These functions are suitable for sorting one-dimensional arrays. If you want to sort a multi-dimensional array, we need to use a callback function to sort the array.

  1. Definition of callback function

A callback function refers to a function passed as a parameter in other functions. In PHP, callback functions are usually used to sort, filter, traverse, etc. arrays. We can use an anonymous function or a function with a custom name as the callback function.

The following is an example of using an anonymous function as a callback function:

$array = array(
    array('price' => 45.50),
    array('price' => 15.00),
    array('price' => 20.15),
    array('price' => 25.00),
    array('price' => 90.10),
    array('price' => 9.99),
);

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

print_r($array);
Copy after login

The output result is as follows:

Array (
    [0] => Array ( [price] => 9.99 )
    [1] => Array ( [price] => 15 )
    [2] => Array ( [price] => 20.15 )
    [3] => Array ( [price] => 25 )
    [4] => Array ( [price] => 45.5 )
    [5] => Array ( [price] => 90.1 )
)
Copy after login
  1. Using the callback function to sort multi-dimensional arrays

If you want to sort a multi-dimensional array, we need to use a callback function to define the sorting rules of the array. We can define multiple sorting conditions in the callback function and compare the values ​​of the array elements one by one according to priority to achieve the purpose of sorting.

The following is an example of using a callback function to sort a multi-dimensional array:

$array = array(
    array('name' => 'John', 'age' => 25, 'score' => 80),
    array('name' => 'Mary', 'age' => 28, 'score' => 90),
    array('name' => 'Bob', 'age' => 20, 'score' => 95),
    array('name' => 'Jack', 'age' => 30, 'score' => 85),
    array('name' => 'Lisa', 'age' => 22, 'score' => 85),
);

// 按照年龄降序、分数升序、名字升序排序
usort($array, function($a, $b) {
    if ($a['age'] == $b['age']) {
        if ($a['score'] == $b['score']) {
            return strcmp($a['name'], $b['name']);
        } else {
            return ($a['score'] > $b['score']) ? 1 : -1;
        }
    } else {
        return ($a['age'] < $b['age']) ? 1 : -1;
    }
});

print_r($array);
Copy after login

The output results are as follows:

Array (
    [0] => Array ( [name] => Mary [age] => 28 [score] => 90 )
    [1] => Array ( [name] => Jack [age] => 30 [score] => 85 )
    [2] => Array ( [name] => Lisa [age] => 22 [score] => 85 )
    [3] => Array ( [name] => John [age] => 25 [score] => 80 )
    [4] => Array ( [name] => Bob [age] => 20 [score] => 95 )
)
Copy after login
  1. Summary

This article introduces how to use PHP to implement sorting of multi-dimensional arrays. First we understand the sorting function in PHP, and then sort the multi-dimensional array through the callback function. In actual development, sorting is a very common function, and sorting multi-dimensional arrays can enable us to better meet various needs.

The above is the detailed content of Sorting multidimensional arrays using PHP. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template