2015-04-03 46 views
1

$result OK 和$inclusion是一個實際的文件名包含在一個循環的變量名

我想做到這一點:

while ($row = mysqli_fetch_array($result)){ 

$inclusion = $row['filename'] ; 

// check if file exists here 

include $inclusion ; 

} 

但它沒有做環......和而是在第一次收錄之後停止......爲什麼? 謝謝!

+0

因爲該文件不存在,它會打印一個錯誤? 你應該檢查 if(file_exists($ inclusion))include $ inclusion; – 2015-04-03 16:28:16

+0

你有什麼文件?你也有任何錯誤? – Rizier123 2015-04-03 16:28:19

+0

從你顯示的代碼中,我會說它不會在*第一次包含之後開始,而是在包含的文件中。這也不是文件存在,因爲這隻會發出警告,但不會致命。事實上,它會是隻有一行。您應該啓用錯誤報告到最高級別,並顯示錯誤以及日誌記錄以更早地發現錯誤:[如何在PHP中獲取有用的錯誤消息?](http://stackoverflow.com/q/845021/367456) – hakre 2015-04-03 16:32:25

回答

0

這應該爲你工作:

在這裏,我首先將文件添加到陣列$files。在此之後,我array_filter()所有文件不存在,並且只採用array_unique()的唯一文件。

最後我只是通過與array_map()然後將所有文件循環,因爲你沒有路徑形成服務器的根目錄,但服務器的磁盤,我只取basename()(指文件名),並用它串聯__DIR__包括它。

<?php 

    while ($row = mysqli_fetch_array($result)){ 
     $files[] = $row['filename']; 
    } 

    $files = array_unique(array_filter($files, function($v){ 
     return file_exists($v); 
    })); 

    array_map(function($v){ 
     require_once(__DIR__ . "/" . basename($v)); 
    }, $files); 

?> 
+0

是的,我確實工作!再次感謝你 !如果我可以的話,我會投票...這也太令人沮喪了:) – patHgaronne 2015-04-03 17:25:00

+0

@patHgaronne不客氣!祝你有美好的一天:D – Rizier123 2015-04-03 17:25:24