Почему здесь не работает natsort (или natcasesort)? - PullRequest
3 голосов
/ 03 августа 2010

Возможно, я делаю что-то смущающее неправильно, но почему этот массив не сортируется?

$narray=array();

$dir_handle = @opendir($path.$projectFolder) or die("Unable to open $path$projectFolder");

$i=0;

while($file = readdir($dir_handle)) {

 $filenameSplit = explode('.',$file);

 if ($file != "." && $file != ".." && $filenameSplit[0] != "logo" && $filenameSplit[1] != "zip" && $filenameSplit[1] != "pdf" && $filenameSplit[1] != "doc" && $filenameSplit[1] != "psd" && $filenameSplit[1] != "") {

  $narray[$i]=$file;

  $i++;
 }

}

natcasesort($narray);

Кажется, я получаю те же результаты, что и при попытке вообще не сортировать массив. sort() работает, но больше ничего не кажется.

Спасибо за любую помощь!


Обновление:

Вот примеры результатов:

С без сортировки :

03_piper_file-manager_02.jpg
05_piper_login-page_02.jpg
02_piper_file-manager_no-slides_01.jpg
04_piper_file-manager_02.jpg
01_piper_file-manager_no-slides_01.jpg

С sort():

01_piper_file-manager_no-slides_01.jpg
02_piper_file-manager_no-slides_01.jpg
03_piper_file-manager_02.jpg
04_piper_file-manager_02.jpg
05_piper_login-page_02.jpg

С natsort() или natcasesort():

03_piper_file-manager_02.jpg
05_piper_login-page_02.jpg
02_piper_file-manager_no-slides_01.jpg
04_piper_file-manager_02.jpg
01_piper_file-manager_no-slides_01.jpg

Я ожидаю, что, по крайней мере, результаты natsort будут выглядеть как сортировка.

1 Ответ

3 голосов
/ 03 августа 2010

natcasesort поддерживает отношение ключ / значение, поэтому, если вы перебираете массив с индексом, вы увидите это поведение.

Попробуйте print_r($narray) после natcasesort. Вы можете перебрать массив, используя foreach.

foreach ($narray as $elem)
{
   /* operate on $elem */
}
...