2013-07-10 53 views
0

我的代碼有一個問題,我有一個例程列出目錄中的文件,並且您可以選擇其中的一個來對應某些表條目(在這種情況下,文件要與特定MP3)。我在下面設計的代碼列出了第一次輸入的所有文件,但第二次輸入列出了所有文件兩次。我不明白出了什麼問題......PHP顯示文件列表重複

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

的問題是,你的下一次循環父「for」循環dirArray的舊值仍然存在。您只需要在每次填充之前將其初始化爲空數組。

變化:

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

到:

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

你也可以將其更改爲:

$dirArray = scandir($myDirectory); 
+0

是啊是有道理的,感謝丹尼爾我知道這是一些愚蠢的。當然。 –

+0

如果這是解決方案,請將其標記爲答案。 –

+0

已經這樣做了,我不得不等待6分鐘....現在完美的工作謝謝! –