也许我做错了一些让人难堪的事情,但是为什么这个数组没有被排序呢?
$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
我至少希望纳索特的结果看起来像索特的。
最佳答案
natcasesort
维护键/值关系,因此如果您使用索引在数组上迭代,您将看到此行为。
在print_r($narray)
之后尝试natcasesort
。可以使用foreach迭代数组。
foreach ($narray as $elem)
{
/* operate on $elem */
}
关于php - 为什么natsort(或natcasesort)在这里不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3398773/