2012-03-21 20 views
0

У меня есть несколько файлов, которые я загружаю в слайд-шоу, я их пронумеровал клиентом в том порядке, в котором они хотели бы отображаться.Как отсортировать массив элементов как чисел?

Я захватывая их с Glob $pics = glob("images/slideshow/*.jpg", GLOB_NOSORT);, но по какой-то причине я получаю старую ошибку сортировки для Windows, 11 сортируется выше 2.

Например,

Array 
(
    [0] => images/slideshow/1.jpg 
    [1] => images/slideshow/14.jpg 
    [2] => images/slideshow/15.jpg 
    [3] => images/slideshow/16.jpg 
    [4] => images/slideshow/18.jpg 
    [5] => images/slideshow/2.jpg 
    [6] => images/slideshow/20.jpg 
    [7] => images/slideshow/21.jpg 
    [8] => images/slideshow/22.jpg 
    [9] => images/slideshow/23.jpg 
    [10] => images/slideshow/24a.jpg 
    [11] => images/slideshow/25.jpg 
    [12] => images/slideshow/26.jpg 
    [13] => images/slideshow/29.jpg 
    [14] => images/slideshow/3.jpg 
    [15] => images/slideshow/36.jpg 
    [16] => images/slideshow/38.jpg 
    [17] => images/slideshow/4.jpg 
    [18] => images/slideshow/40.jpg 
    [19] => images/slideshow/41.jpg 
    [20] => images/slideshow/5.jpg 
    [21] => images/slideshow/6.jpg 
    [22] => images/slideshow/7.jpg 
) 

Я запустите его через asort(), и я не могу понять, почему это не работает, если не считать того, что они являются строками, а не строгими числами.

+0

это не ошибка, PHP будет рассматривать ваш путь как строку, как это предполагается сделать, вы должны сказать ему, в частности, для сортировки на основе файла –

+0

Windows, используемый, чтобы сделать это, я не имею в виду PHP :) –

+0

Возможный дубликат [Сортировка имени файла php] (http://stackoverflow.com/questions/1893818/php-filename-sorting) – salathe

ответ

6

Заканчивать natsort:

Эта функция реализует алгоритм сортировки, который заказывает буквенно-цифровые строки в том, как человеческое существо будет при сохранении ключ/значение ассоциации.

$array2 = array("img12.png", "img10.png", "img2.png", "img1.png"); 

print_r($array2); 

Array 
(
    [3] => img1.png 
    [2] => img2.png 
    [1] => img10.png 
    [0] => img12.png 
) 
+0

Гений, я не видел эту функцию раньше. Благодаря! –