0

我的代码有问题,我有一个列出目录中文件的例程,您可以选择其中一个来对应某些表条目(在这种情况下,文件与特定的 mp3 相关联)。我在下面设计的代码列出了第一个条目的所有文件一次,但第二个条目列出了所有文件两次。我不明白出了什么问题...

for ($k=0; $k < $_SESSION[CampaignTrax]; $k++) {
                        $numIncrement = $k +1;

$artistConcentrate = $_POST["ArtistField_".$numIncrement];
$titleConcentrate = $_POST["TitleField_".$numIncrement];
$mixConcentrate = $_POST["MixField_".$numIncrement];
$trackfileConcentrate = "trackFile".$numIncrement;

$myDirectory = opendir(".");

while($entryName = readdir($myDirectory)) {
    $dirArray[] = $entryName;
}

closedir($myDirectory);

$indexCount = count($dirArray);

sort($dirArray);

echo "<tr><td>".$numIncrement."</td><td>".$artistConcentrate."</td><td>".$titleConcentrate."</td><td>".$mixConcentrate."</td><td><select name=\"".$trackfileConcentrate."\"><option value=\"\">Select File...</option>";

 for($index=0; $index < $indexCount; $index++) {
        if (substr("$dirArray[$index]", 0, 1) != ".") { // don't list hidden files
 echo "<option value=\"".$dirArray[$index]."\">".$dirArray[$index]."</option>";
 }

}

echo"</select></td></tr>";
}

echo "</table>";

这可能很简单,并且一如既往地感谢所有帮助。

CP

4

1 回答 1

0

问题是下次循环父“for”循环时,dirArray 的旧值仍然存在。您需要做的就是在每次填充之前将其初始化为一个空数组。

改变:

while($entryName = readdir($myDirectory)) {
    $dirArray[] = $entryName;
}

至:

$dirArray = array();
while($entryName = readdir($myDirectory)) {
    $dirArray[] = $entryName;
}

您也可以将其更改为:

$dirArray = scandir($myDirectory);
于 2013-07-10T17:59:19.760 回答