代码之家  ›  专栏  ›  技术社区  ›  Tim

为什么natsort(或natscassort)不在这里工作?

  •  3
  • Tim  · 技术社区  · 16 年前

    也许我做错了一些让人难堪的事情,但为什么不把这个数组排序呢?

    $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
    

    用 分类() :

    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_文件管理器_02.jpg
    05_piper_登录页_02.jpg
    02_piper_文件管理器_no-slides_01.jpg
    04_piper_文件管理器_02.jpg
    01_piper_file-manager_no-slides_01.jpg
    

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

    1 回复  |  直到 16 年前
        1
  •  3
  •   Brandon Horsley    16 年前

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

    尝试 print_r($narray) 之后 纳塔克索尔特 . 可以使用foreach迭代数组。

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