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 に答える