4.16. Sorting an Array
Problem
You want to sort an array in a specific way.
Solution
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).
Discussion
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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access