0

我有这段代码,它从指定目录读取文件,并将内容输出到下拉菜单中。问题是所有文件都没有按字母数字顺序列出。他们都乱七八糟了!无论如何,这是代码:

<form name="index1">
<select name="menu" onchange="jump(this.form)">
<?php

$dir = opendir($dirname);
echo '<option value="">Choose a chapter or volume</option>';
while(false != ($file = readdir($dir)))
{
    if(($file != ".") and ($file != "..") and ($file != "afile.php")){      
        $name = basename($file,".php");
        echo "<option value=".$file.">$name</option>";
    }
}           
?>
</select>
</form>

我究竟做错了什么?

4

2 回答 2

1

这可能会解决您的问题:

<form name="index1">
<select name="menu" onchange="jump(this.form)">
<?php

    echo '<option value="">Choose a chapter or volume</option>';

    // Get an array of files in the "$dirname" path
    // The array should be sorted by name ascending
    $files = array_filter(glob($dirname. '/*'), 'is_file');

    foreach ($files as $file) {
        if ($file != "afile.php") {
            $name = basename($file,".php");
            echo "<option value=".$file.">$name</option>";
        }
    }

?>
</select>
</form>

您可以检查glob功能,这非常有用!

于 2013-06-09T00:29:14.253 回答
-1

有一个错字:

你写了:

foreach(files as $file) {

但应该是:

foreach($files as $file) {
于 2015-05-21T11:46:40.540 回答