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.
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.
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);
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 ) )
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);
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 ) )
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!