我的网站包含许多办公室先例的手册。当用户使用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>";
?>
如何实现系统按字母顺序对列表进行排序?
答案 0 :(得分: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)
您需要先创建一个数组。
希望这有帮助。
答案 1 :(得分:2)
针对您的具体情况:如果您使用scandir()
代替readdir()
,则默认顺序已按字母顺序排列。
http://php.net/manual/en/function.scandir.php
第二个参数是:
<强> sorting_order 强>
默认情况下,排序顺序是按字母顺序排列的 升序。如果可选的sorting_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
}
}
答案 2 :(得分:0)
将其保存到数组中,然后使用字母数字键代替数字键。然后,您应该能够在键上使用排序功能,并且您的值会更改为正确的顺序。然后迭代数组并再次回显它们。
有关排序数组的更多信息:http://php.net/manual/en/array.sorting.php
答案 3 :(得分:0)
<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");
sort($my_array);
print_r($my_array);
?>
或者您可以使用:asort,rsort,arsort
答案 4 :(得分: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>";
?>