Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2009, 11:23   #1
strug
 
Регистрация: 28.08.2009
Сообщений: 7
По умолчанию скрипт должен сортировать названия файлов

всем привет...помогите разобраться с массивом, соданного функцией scandir()
скрипт должен сортировать названия файлов следующим образом

Array (
[0] => L-002.jpg
[1] => L-063a.jpg
[2] => Z-001.jpg
[3] => Z-003.jpg
[4] => Z-0010.jpg
[5] => Z-0010v.jpg
)

т.е. групировка по первой букве+сортировка значений после "-" по возростанию...стандартными функциями добится желаемого результата не смог, поэтому написал функцию numsort, которая в сочетании с usort() дает следующий результат (сам код ниже)...да, и названия менять нельзя(

Array (
[0] => Z-001.jpg
[1] => L-002.jpg
[2] => Z-003.jpg
[3] => Z-0010v.jpg
[4] => Z-0010.jpg
[5] => L-063a.jpg
)

т.е. смог добится только сортировки после "-"

ПОМОГИТЕ ДОРАБОТАТЬ СКРИПТ - ОЧЕНЬ НАДО !!!!

ВСЕМ ЗАРАНЕЕ СПАСИБО
PHP код:
<?php
$list 
scandir("modules/images/all/97/");
$file_list = array();
        foreach (
$list as $txt){
        
$fn=strrchr($txt,'.');                            
        
$fn=strtolower($fn); 
        if (
$fn!=='.jpg') continue; 
        
$file_list[] = $txt;
        } 

function 
numsort($a$b) {
    if((int) 
substr($a,strpos($a,'-')+1) == (int) substr($b,strpos($b,'-')+1)) {
        return 
0;
    }

    return (int) 
substr($a,strpos($a,'-')+1) > (int) substr($b,strpos($b,'-')+1) ? : -1;
}

usort($file_list'numsort');
print_r($file_list);
strug вне форума Ответить с цитированием
Старый 28.08.2009, 12:19   #2
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

Цитата:
Сообщение от strug Посмотреть сообщение
[2] => Z-001.jpg
[3] => Z-003.jpg
[4] => Z-0010.jpg
[5] => Z-0010v.jpg
так вам ни один алгоритм не отсортирует, потому что это наикривейшая нумерация

необходимо привести список в единый вид: либо
Код:
[2] => Z-001.jpg 
[3] => Z-003.jpg 
[4] => Z-010.jpg 
[5] => Z-010v.jpg
, либо
Код:
[2] => Z-1.jpg 
[3] => Z-3.jpg 
[4] => Z-10.jpg 
[5] => Z-10v.jpg

такое отсортирует любая стандартная функция
свободен...
wall66 вне форума Ответить с цитированием
Старый 28.08.2009, 12:22   #3
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
по первой букве+сортировка значений после "-" по возростанию
Вы опечатались?
Array (
[0] => L-002.jpg
[1] => L-063a.jpg
[2] => Z-001.jpg
[3] => Z-003.jpg
[4] => Z-0010.jpg
[5] => Z-0010v.jpg
)
по букве и возрастанию так
Array (
[0] => L-002.jpg
[1] => L-063a.jpg
[2] => Z-001.jpg
[3] => Z-0010.jpg
[4] => Z-0010v.jpg
[5] => Z-003.jpg
)
если опечатались то
PHP код:
sort($arrSORT_STRING); 
если нет то это будет сборка разборка массива раза 3
Стрелок-охотник

Последний раз редактировалось mv28jam; 28.08.2009 в 12:32.
mv28jam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Explorer - пропали названия файлов и папок у ''Экскизов'' DomiNick Операционные системы общие вопросы 10 27.08.2009 10:57
должен подгрузиться скрипт который бы создал и вставил в этот див <iframe></iframe> Beni JavaScript, Ajax 1 05.08.2009 14:30
Нужна прога чотбы скинуть названия файлов в папке в один файл (txt) Ninzjacont Помощь студентам 2 08.02.2009 20:30
Zip-архив и названия файлов украинскими буквами Richardcv Общие вопросы по Java, Java SE, Kotlin 0 14.01.2009 17:38
Найти названия файлов из Excel АLексаNдр Microsoft Office Excel 27 10.11.2008 16:55