Сартировка массива. Сначала a-z а после них 0-9.

K
На сайте с 01.08.2009
Offline
88
574

Помогите ламеру. Никак не могу решить, казалось бы, простую задачу на PHP. Есть массив, состоящий из имен файлов. Нужно его отсортировать таким образом, чтобы имена начинающиеся с цифр были не вначале, а в конце. Примерно так:

aakkglflgflg.jpg

bbbfkfkfkf.jpg
ccccgkkgkgk.jpg
001ffkk.jpg
02kff.jpg
20-ttt.jpg
30.jpg
DP
На сайте с 24.04.2012
Offline
16
#1

Думаю должна быть и встроенная функция, но если нет всегда можно написать самому. Типа такого


$files = array("02kff.jpg", "001ffkk.jpg", "30.jpg", "bbbfkfkfkf.jpg", "20-ttt.jpg", "ccccgkkgkgk.jpg", "aakkglflgflg.jpg");

function cmp($a, $b)
{ if(('0' <= $a[0] && $a[0] <= '9' && '0' < $b[0] && $b[0] > '9') || ('0' <= $b[0] && $b[0] <= '9' && '0' < $a[0] && $a[0] > '9'))
return (-1)*strcasecmp($a, $b);
else
return strcasecmp($a, $b);
}

usort($files, "cmp");

foreach ($files as $key => $value) {
echo $value."<br />";
}
K
На сайте с 01.08.2009
Offline
88
#2

Спасибо! Все работает так, как задумывалось :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий