我的代码有问题,我有一个列出目录中文件的例程,你可以选择其中一个对应一些表条目(在这种情况下,文件与特定的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
答案 0 :(得分:0)
问题是,下次循环父“for”循环时,dirArray的旧值仍然存在。您需要做的就是在每次填充之前将其初始化为空数组。
变化:
while($entryName = readdir($myDirectory)) {
$dirArray[] = $entryName;
}
为:
$dirArray = array();
while($entryName = readdir($myDirectory)) {
$dirArray[] = $entryName;
}
您也可以将其更改为:
$dirArray = scandir($myDirectory);