Sorting Arrays
PHP has several functions that deal with sorting arrays, and this document exists to help sort it all out.
The main differences are:
-
Some sort based on the array keys, whereas others by
the values:
$array['key'] = 'value'; - Whether or not the correlation between the keys and values are maintained after the sort, which may mean the keys are reset numerically (0,1,2 ...)
- The order of the sort: alphabetical, ascending (low to high), descending (high to low), natural, random, or user defined
- Note: All of these sort functions act directly on the array variable itself, as opposed to returning a new sorted array
- If any of these sort functions evaluates two members as equal then they retain their original order. Prior to PHP 8.0.0, their order were undefined (the sorting was not stable).
| Function name | Sorts by | Maintains key association | Order of sort | Related functions |
|---|---|---|---|---|
| array_multisort() | value | string keys yes, int keys no | first array or sort options | array_walk() |
| asort() | value | yes | ascending | arsort() |
| arsort() | value | yes | descending | asort() |
| krsort() | key | yes | descending | ksort() |
| ksort() | key | yes | ascending | krsort() |
| natcasesort() | value | yes | natural, case insensitive | natsort() |
| natsort() | value | yes | natural | natcasesort() |
| rsort() | value | no | descending | sort() |
| shuffle() | value | no | random | array_rand() |
| sort() | value | no | ascending | rsort() |
| uasort() | value | yes | user defined | uksort() |
| uksort() | key | yes | user defined | uasort() |
| usort() | value | no | user defined | uasort() |

