# natsort

Sort an array using a "natural order" algorithm

### Description

bool natsort ( array `&\$array` )

This function implements a sort algorithm that orders alphanumeric strings in the way a human being would while maintaining key/value associations. This is described as a "natural ordering". An example of the difference between this algorithm and the regular computer string sorting algorithms (used in sort) can be seen in the example below.

`array`

The input array.

### Return Values

Returns `TRUE` on success or `FALSE` on failure.

### Changelog

Version Description
5.2.10 Zero padded numeric strings (e.g., '00005') now essentially ignore the 0 padding.

### Examples

Example #1 natsort examples demonstrating basic usage

``` <?php\$array1 = \$array2 = array("img12.png", "img10.png", "img2.png", "img1.png");asort(\$array1);echo "Standard sorting\n";print_r(\$array1);natsort(\$array2);echo "\nNatural order sorting\n";print_r(\$array2);?> ```

The above example will output:

```Standard sorting
Array
(
 => img1.png
 => img10.png
 => img12.png
 => img2.png
)

Natural order sorting
Array
(
 => img1.png
 => img2.png
 => img10.png
 => img12.png
)
```

For more information see: Martin Pool's » Natural Order String Comparison page.

Example #2 natsort examples demonstrating potential gotchas

``` <?phpecho "Negative numbers\n";\$negative = array('-5','3','-2','0','-1000','9','1');print_r(\$negative);natsort(\$negative);print_r(\$negative);echo "Zero padding\n";\$zeros = array('09', '8', '10', '009', '011', '0'); print_r(\$zeros);natsort(\$zeros);print_r(\$zeros);echo "Other characters interfering\n";\$images_oops = array('image_1.jpg','image_12.jpg', 'image_21.jpg', 'image_4.jpg');print_r(\$images_oops);natsort(\$images_oops);print_r(\$images_oops);echo "Sort by keys\n";\$smoothie = array('orange' => 1, 'apple' => 1, 'yogurt' => 4, 'banana' => 4);print_r(\$smoothie);uksort( \$smoothie, 'strnatcmp');print_r(\$smoothie);?> ```

The above example will output:

```Negative numbers
Array
(
 => -5
 => 3
 => -2
 => 0
 => -1000
 => 9
 => 1
)
Array
(
 => -2
 => -5
 => -1000
 => 0
 => 1
 => 3
 => 9
)

Zero padding
Array
(
 => 09
 => 8
 => 10
 => 009
 => 011
 => 0
)
Array
(
 => 0
 => 8
 => 009
 => 09
 => 10
 => 011
)

Other characters interfering
Array
(
 => image_1.jpg
 => image_12.jpg
 => image_21.jpg
 => image_4.jpg
)
Array
(
 => image_1.jpg
 => image_4.jpg
 => image_12.jpg
 => image_21.jpg
)

Sort by keys
Array
(
[orange] => 1
[apple]  => 1
[yogurt] => 4
[banana] => 4
)
Array
(
[apple]  => 1
[banana] => 4
[orange] => 1
[yogurt] => 4
)
```