Php 为什么不是';natsort(或natcasesort)在这里工作吗?

Php 为什么不是';natsort(或natcasesort)在这里工作吗?,php,arrays,sorting,natsort,Php,Arrays,Sorting,Natsort,也许我做了一些令人尴尬的错误,但是为什么这个数组没有被排序呢 $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 != "." &&

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

$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()
可以工作,但似乎没有其他方法可以工作

谢谢你的帮助


更新:

以下是示例结果:

没有排序:

使用
sort()

使用
natsort()
natcasesort()


我希望natsort的结果至少看起来像sort的一样。

natcasesort
维护键/值关系,因此如果您使用索引在数组上迭代,您将看到这种行为

natcasesort
之后尝试打印($narray)。可以使用foreach迭代数组

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

可能数组已经排序了?结果通常是按字母顺序排列的,尽管这取决于操作系统。您能告诉我们使用
natcasesort
得到的结果是什么,以及您期望得到什么吗?您是否考虑了一些示例数据?或者,考虑到$narray的一些设置,您得到了什么,您希望得到什么?我已经在我的帖子中添加了一些示例结果。谢谢出于好奇,natcasesort的返回值是多少?
print\r
after
natcasesort
告诉我:
Array([4]=>01\u piper\u file-manager\u no-slides\u 01.jpg[2]=>02\u piper\u file-manager\u no-slides\u 01.jpg[0]=>03\u piper\u file-manager\u-manager\u 02.jpg[3]=>04\u piper\u file-manager\u 02.jpg[1]=>05\u piper\u login-page\u 02.jpg
不幸的是,我没有足够的经验来理解它。@Tim在迭代之前调用
array\u values
,或者使用
foreach
迭代。我更新了我的答案,告诉你如何按顺序迭代数组。我有一个类似这样的for循环:
for(i元=0 ;$i@Tim:将for循环更改为我答案中列出的foreach,并使用“$elem”而不是“$narray[$i]”-您将被设置。
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
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
foreach ($narray as $elem)
{
   /* operate on $elem */
}