To sort an array using the traditional definition of sort, use
sort( )
:
$states = array('Delaware', 'Pennsylvania', 'New Jersey'); sort($states);
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'); asort($states); 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'); natsort($tests);
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.
Recipe 4.18 for sorting with a custom
comparison function and Recipe 4.19 for
sorting multiple arrays; documentation on sort( )
at http://www.php.net/sort, asort( )
at http://www.php.net/asort,
natsort( )
at
http://www.php.net/natsort,
natcasesort( )
at
http://www.php.net/natcasesort, rsort( )
at http://www.php.net/rsort, and
arsort( )
at
http://www.php.net/arsort.
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.