PHP Arrays Sorting an Array - Web Development and Design | Tutorial for Java, PHP, HTML, Javascript PHP Arrays Sorting an Array - Web Development and Design | Tutorial for Java, PHP, HTML, Javascript

Breaking

Post Top Ad

Post Top Ad

Monday, May 20, 2019

PHP Arrays Sorting an Array

PHP Arrays




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.

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.


No comments:

Post a Comment

Post Top Ad