簡體   English   中英

如何對特定目錄中的目錄和文件進行排序?

[英]how to sort directories and files in a certain directory?

我正在讀取目錄中的所有目錄和文件,並希望按字母順序對文件進行排序。

if ($handle = opendir($dir)) {
   while (false !== ($file = readdir($handle))) {
      $files = array($file);
      sort($files);

      $clength = count($files);
      for($x = 0; $x < $clength; $x++) {
        echo $files[$x];
        echo "<br>";
      }

上面的代碼向我輸出所有目錄和文件,但不按字母順序對它們進行排序。 我做錯了什么?

要回答您的問題,您需要首先收集所有文件,然后立即對其進行排序。 因此您的代碼看起來像-

<?php

while (false !== ($file = readdir($handle))) {
      $files[] = $file;
}

sort($files);
  • 但是,更好的選擇是只使用scandir() ,它會向您返回目錄中的文件列表(包括文件夾),然后可以對它們進行相應的排序。

  • 我使用過usort() ,以按字母順序對文件進行排序,而忽略了大寫或小寫,同時保留了文件名的原始表示形式。

碼:

<?php 

$files = array_diff(scandir(YOUR_DIRECTORY_PATH_HERE),array(".",".."));

usort($files,function($file1,$file2){
    return strcmp(strtolower($file1),strtolower($file2));
});

print_r($files);
  • 我已經用array_diff()刪除了. ..包含在scandir().的結果中scandir().

您必須使用這個。

if ($handle = opendir($dir)) {


        while (false !== ($file = readdir($handle))) {
            $files[] = $file;

        }
        sort($files);
        $clength = count($files);
        for ($x = 0; $x < $clength; $x++) {
            echo $files[$x];
            echo "<br>";
        }
    }

更新資料

$files[] = strtolower($file); // for ignore first letter capital

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM