Имена файлов php со знаком подчеркивания

У меня есть массив имен файлов, которые я использую с помощью DirectoryIterator. Я пытаюсь сортировать имена файлов, чтобы они были в порядке, так они появляются на сервере.

     2DAYSALEGATE_PG1.jpg
     2DAYSALEGATE_PG2.jpg
     722_PG1.jpg
     PW_PG2_COKE_A.jpg
     PW_PG3_COKE_A.jpg
     PWBY4_DELI-1.jpg
   

Приобретая имена файлов, они выходят следующим образом. Я попытался использовать сортировку, natsort и natcasesort. Имя файла подчеркивается символом подчеркивания после букв. Что я могу сделать, чтобы подчеркнуть символ подчеркивания как символ приоритета.

array(6) { [0]=> string(20) "2DAYSALEGATE_PG1.jpg" [1]=> string(20) "2DAYSALEGATE_PG2.jpg" [2]=> string(11) "722_PG1.jpg" [5]=> string(16) "PWBY4_DELI-1.jpg" [3]=> string(17) "PW_PG2_COKE_A.jpg" [4]=> string(17) "PW_PG3_COKE_A.jpg" } 

благодаря

Вы можете использовать метод php usort , проверьте его здесь, используя usort вы можете реализовать свой собственный метод compare to функцией и отсортировать массив в соответствии с ним.

пользовательское compare to функцией – это int callback ( mixed $a, mixed $b ) , вы должны вернуть значение меньше 0, если $a < $b , ноль, если он равен, и значение больше 0, когда $a > $b

выполните свой предпочтительный порядок сортировки с использованием этого метода

пример:

 function cmp($a, $b) { $aTemp = str_replace('_', '0', $a); $bTemp = str_replace('_', '0', $b); return strcmp($aTemp,$bTemp); } usort($arr, "cmp"); 

Не уверен, что вы можете здесь сделать. Лексически подчеркивание имеет более высокое значение ASCII, чем любой буквенно-цифровой символ.

Замена подчеркивания на низкое значение ASCII, например \ x01, а затем сортировка, а затем замена низкого значения ASCII на символ подчеркивания, даст результат, который вы хотите, но это кажется довольно дорогостоящим для тривиального изменения в порядке.

попробуйте использовать

 for(i=0;i<array(6).length;i++){ if (array(6).charAt(0)=='_'){ for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (a[i] > a[j]) { temp = a[i]; a[i] = a[j]; a[j] = temp; }}}}}