Sorting an Array in PHP

By: David Sklar Printer Friendly Format    

You want to sort an array in a specific way.

To sort an array using the traditional definition of sort, use sort():

$states = array('Delaware', 'Pennsylvania', 'New Jersey');

To sort numerically, pass SORT_NUMERIC as the second argument to sort( ).

$scores = array(1, 10, 2, 20);
sort($scores, SORT_NUMERIC);

This resorts the numbers in ascending order (1, 2, 10, 20) instead of lexicographical order (1, 10, 2, 20).

The sort() function doesn't preserve the key/value association between elements; instead, entries are reindexed starting at 0 and going upward. (The one exception to this rule is a one-element array; its lone element doesn't have its index reset to 0. This is fixed as of PHP 4.2.3.)

To preserve the key/value links, use asort( ). The asort( ) function is normally used for associative arrays, but it can also be useful when the indexes of the entries are meaningful:

$states = array(1 => 'Delaware', 'Pennsylvania', 'New Jersey');

while (list($rank, $state) = each($states)) {
    print "$state was the #$rank state to join the United States\n";


Use natsort( ) to sort the array using a natural sorting algorithm. Under natural sorting, you can mix strings and numbers inside your elements and still get the right answer.

$tests = array('test1.php', 'test10.php', 'test11.php', 'test2.php');

The elements are now ordered: 'test1.php', 'test2.php', 'test10.php', and 'test11.php'. With natural sorting, the number 10 comes after the number 2; the opposite occurs under traditional sorting. For case-insensitive natural sorting, use natcasesort( ).

To sort the array in reverse order, use rsort( )or arsort( ), which is like rsort( ) but also preserves keys. There is no natrsort( ) or natcasersort( ). You can also pass SORT_NUMERIC into these functions.

Ask a Question

Most Viewed Articles (in PHP )

PHP file upload prompts authentication for anonymous users

unset() and empty() functions in PHP

Parent: child process exited with status 3221225477 -- Restarting

A Basic Example using PHP in AWS (Amazon Web Services)

Retrieve multiple rows from mysql and automatically create a table in PHP

Password must include both numeric and alphabetic characters - Magento

Integers and Floating-Point Numbers in PHP

Reading .CSV file in PHP

How to fix: Warning: Visiting this site may harm your computer -

Building PHP 5.x with Apache2 on SuSE Professional 9.1/9.2

Running different websites on different versions of PHP in Windows 2003 & IIS6 platform

Exception in module wampmanager.exe at 000F15A0 in Windows 8

PHP file upload (Large Files)

Multiple File Upload in PHP using IFRAME

PHP code to import from CSV file to MySQL

Latest Articles (in PHP)

Comment on this tutorial