4

也许我在做一些令人尴尬的错误,但为什么这个数组没有被排序?

$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 的结果看起来像 sort 的。

4

1 回答 1

3

natcasesort维护键/值关系,因此如果您使用索引遍历数组,您将看到此行为。

print_r($narray)之后试试natcasesort。您可以使用 foreach 迭代数组。

foreach ($narray as $elem)
{
   /* operate on $elem */
}
于 2010-08-03T17:39:20.603 回答