Sorting Arrays in PHP
Sorting arrays is one of the most common operation in programming, and PHP provides a several functions to handle array sorting. Sorting arrays in PHP can be done by values or keys, in ascending or descending order. PHP also allows you to create custom sorting functions.
Table of Content
- Sort Array in Ascending Order – sort() Function
- Sort Array in Descending Order – rsort() Function
- Sort Array in Ascending Order (Array Values) – asort() Function
- Sort Array in Descending Order (Array Value) – arsort() Function
- Sort an Array in Ascending Order (Array Key) – ksort() Function
- Sort Array in Descending Order (Array Key) – krsort() Function
- Sort Array using Comparison Function – uasort() Function
Sort an Array in Ascending Order – sort() Function
The sort() function is used to sort an array by values in ascending order. It reindexes the array numerically after sorting the array elements. It means the original keys are lost.
Syntax:
sort(array &$array, int $sort_flags = SORT_REGULAR);
Example: Sort the array elements in ascending order using PHP sort() function.
<?php
$arr = array(40, 61, 2, 22, 13);
sort($arr);
print_r($arr);
?>
Output
Array ( [0] => 2 [1] => 13 [2] => 22 [3] => 40 [4] => 61 )
Sort an Array in Descending Order – rsort() Function
The rsort() function sorts an array by values in descending order. Like sort(), it reindexes the array numerically.
Syntax:
rsort(array &$array, int $sort_flags = SORT_REGULAR);
Example: Sort the array elements in descending order using PHP rsort() function.
<?php
$arr = array(40, 61, 2, 22, 13);
rsort($arr);
print_r($arr);
?>
Output
Array ( [0] => 61 [1] => 40 [2] => 22 [3] => 13 [4] => 2 )
Sort an Array in Ascending Order According to Array Values – asort() Function
The asort() function sorts an array by values in ascending order while maintaining the key-value association.
Syntax:
asort(array &$array, int $sort_flags = SORT_REGULAR);
Example: Sort the array in ascending order according to array values using PHP rsort() function.
<?php
$arr = array(
"Ayush"=>"23",
"Shankar"=>"47",
"Kailash"=>"41"
);
asort($arr);
print_r($arr)
?>
Output
Array ( [Ayush] => 23 [Kailash] => 41 [Shankar] => 47 )
Sort an Array in Descending Order According to Array Value – arsort() Function
The arsort() function sorts an array by values in descending order while maintaining the key-value association.
Syntax:
arsort(array &$array, int $sort_flags = SORT_REGULAR);
Example: Sort the array in descending order according to array values using PHP arsort() function.
<?php
$arr = array(
"Ayush"=>"23",
"Shankar"=>"47",
"Kailash"=>"41"
);
arsort($arr);
print_r($arr);
?>
Output
Array ( [Shankar] => 47 [Kailash] => 41 [Ayush] => 23 )
Sort an Array in Ascending Order According to Array Key – ksort() Function
The ksort() function sorts an array by keys in ascending order, preserving key-value pairs.
Syntax:
ksort(array &$array, int $sort_flags = SORT_REGULAR);
Example: Sort the array in ascending order according to array ket using PHP ksort() function.
<?php
$arr = array(
"Ayush"=>"23",
"Shankar"=>"47",
"Kailash"=>"41"
);
ksort($arr);
print_r($arr)
?>
Output
Array ( [Ayush] => 23 [Kailash] => 41 [Shankar] => 47 )
Sort Array in Descending Order According to Array Key – krsort() Function
The krsort() function sorts an array by keys in descending order, preserving key-value pairs.
Syntax:
krsort(array &$array, int $sort_flags = SORT_REGULAR);
Example: Sort the array in descending order according to array ket using PHP krsort() function.
<?php
$arr = array(
"Ayush"=>"23",
"Shankar"=>"47",
"Kailash"=>"41"
);
krsort($arr);
print_r($arr)
?>
Output
Array ( [Shankar] => 47 [Kailash] => 41 [Ayush] => 23 )
Sort an Array using User-Defined Comparison Function – uasort() Function
The uasort() function sorts an array with a user-defined comparison function, while maintaining the key-value association.
Syntax:
uasort(array &$array, callable $callback);
Example: Sort an array using comparison function (user defined) in uasort() function.
<?php
// User defined comparator function
function sort_array($a, $b) {
if ($a==$b) return 0;
return ($a<$b)?-1:1;
}
// Input Array
$arr = array(
"a" => 4,
"b" => 2,
"g" => 8,
"d" => 6,
"e" => 1,
"f" => 9
);
uasort($arr,"sort_array");
// Print the sorted array
print_r($arr);
?>
Output
Array ( [e] => 1 [b] => 2 [a] => 4 [d] => 6 [g] => 8 [f] => 9 )