[英]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);
.
和..
包含在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.