1

我有一个网站,其中包含许多办公室先例的手册。当用户使用 HTML 上传脚本时,它将先例上传到服务器上的文件夹。我使用以下脚本列出该特定文件夹中的所有文件。

<?php  //define the path as relative
  $dir = "./OFFICE PRECEDENTS/Business & Corporate Law"; 
  $webpath ="";  //using the opendir function  
  echo "<ol>";    
  // Open a known directory, and proceed to read its contents   
  if ($dh = opendir($dir)) {     
  while (($file = readdir($dh)) !== false) {   
  if (is_dir($dir.'/'.$file)){}      
  else if ($file == '.'){}      
  else if ($file == '..'){} 
  else if ($file == 'index.php'){}     
  else {      
  echo "<li><a href='https://manual.malicki-law.ca/$dir/$file'>$file</a></li>\n";      
  }    
  }       
  closedir($dh);     
  } 
  echo "</ol>";     
  ?>

如何实现按字母顺序对列表进行排序的系统?

4

5 回答 5

2

我相信这应该可以帮助您:

natcasesort:http ://www.php.net/manual/en/function.natcasesort.php

usort:http ://www.php.net/manual/en/function.usort.php带有一个比较器函数,用于比较 strtolower(a) 和 strtolower(b)

您需要先创建一个数组。

希望这可以帮助。

于 2012-08-24T15:46:15.023 回答
2

对于您的特定情况:如果您使用scandir()而不是readdir(),则默认顺序已经按字母顺序排列。

http://php.net/manual/en/function.scandir.php

第二个参数是:

sort_order
默认情况下,排序顺序是按字母升序排列的。如果可选的排序顺序设置为 SCANDIR_SORT_DESCENDING,那么排序顺序是按字母降序排列的。如果它设置为 SCANDIR_SORT_NONE 则结果未排序。

所以而不是:

 if ($dh = opendir($dir)) {     
   while (($file = readdir($dh)) !== false) {   
       // your code   
    }    
  }       
  closedir($dh);  

只需使用类似的东西:

if ($files = scandir($dir))
{
    foreach ($files as $file) {
       // your code
    }
}
于 2012-08-24T15:49:04.707 回答
0

将其保存到一个数组中,然后使用字母数字键代替数字键。然后您应该能够对键使用排序功能,并且您的值会更改为正确的顺序。然后只需遍历数组并再次回显它们。

有关排序数组的更多信息:http: //php.net/manual/en/array.sorting.php

于 2012-08-24T15:43:43.683 回答
0
<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");

sort($my_array);
print_r($my_array);
?>

或者您可以使用:asort、rsort、arsort

于 2012-08-24T15:47:14.203 回答
0

有很多方法可以做到这一点,glob()也很好,那么你不必担心目录。

<?php 

$dir = "./OFFICE PRECEDENTS/Business & Corporate Law/";

$files = glob($dir."*.*");
sort($files);//Sort the array

echo "<ol>";
foreach($files as $file){
    if($file == $dir.'index.php'){continue;}
    $file = basename($file);
    echo "\t<li><a href='https://manual.malicki-law.ca/$dir/$file'>$file</a></li>\n";
}
echo "</ol>";
?>
于 2012-08-24T15:51:41.493 回答