用php正确排序数组

I have an array that I wish to sort, it contains images with file extensions, the filename is numeric and the file extension is obviously a string.

$files = array();
$files[] = '4.jpg';
$files[] = '14.jpg';
$files[] = '1.jpg';
$files[] = '44.jpg';

If i use sort() then I end up with the following:

sort($files);
print_r($files);

Array
(
    [0] => 1.jpg
    [1] => 14.jpg
    [2] => 4.jpg
    [3] => 44.jpg
)

What i actually want is:

Array
(
    [0] => 1.jpg
    [1] => 4.jpg
    [2] => 14.jpg
    [3] => 44.jpg
)

Is this possible?

The quickest an easiest way of doing this is with natsort() - http://php.net/manual/en/function.natsort.php

e.g:

natsort($files);
print_r($files);

Array
(
    [0] => 1.jpg
    [1] => 4.jpg
    [2] => 14.jpg
    [3] => 44.jpg
)

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".

you can also use sort_flags option in the sort() function

sort($files, SORT_NUMERIC);
print_r($files);

Array
(
    [0] => 1.jpg
    [1] => 4.jpg
    [2] => 14.jpg
    [3] => 44.jpg
)

The optional second parameter sort_flags may be used to modify the sorting behavior using these values:

Sorting type flags:

SORT_REGULAR - compare items normally (don't change types)

SORT_NUMERIC - compare items numerically

SORT_STRING - compare items as strings

SORT_LOCALE_STRING - compare items as strings, based on the current locale. Added in PHP 4.4.0 and 5.0.2, it uses the system locale, which can be changed using setlocale().

$files = array();
$files[] = '4.jpg';
$files[] = '14.jpg';
$files[] = '1.jpg';
$files[] = '44.jpg';
sort($files, SORT_NUMERIC);
print_r($files);

Array
(
    [0] => 1.jpg
    [1] => 4.jpg
    [2] => 14.jpg
    [3] => 44.jpg
)