2017-02-10 39 views
0

我有一個腳本,將一個CSV文件放到一個臨時文件夾中,直到另一個腳本將其導入到我的數據庫中。這是一個單獨的腳本,由於各種原因,無法將它們放置到臨時文件夾和連續數據庫導入中。PHP - 在沒有foreach()的文件夾中選擇ONLY文件?

因爲我現在有一個獨立的導入腳本,我首先需要掃描臨時文件夾並查找導入文件,它是文件夾中的唯一文件,但是文件名不斷變化,定義。我現在的問題是,如何獲得所述文件的文件名,將其分配給一個變量並稍後用於數據庫導入?

當使用一個foreach()循環時,我最終得到一個數組,而是想要一個字符串作爲進一步的用法。

PHP

if(file_exists('./'.$temp)) { 
    $files = scandir('./'.$temp.'/'); 

    foreach ($files as $attachment) { 
     if (in_array($attachment, array(".",".."))) continue; 

     $import_file = $attachment; 
    } 
} else { 
    die("Temp Folder for $temp could not be found, hence no files exist for import. Operation cancelled."); 
} 

回答

2

由於scandir按字母順序(http://php.net/manual/en/function.scandir.php)下令,你的文件將永遠在scandir陣列端(在非Unix系統是唯一的文件,在UNIX系統上說到在...之後)。

因此,你只需要得到數組的最後一個項目,像這樣:

$s = scandir("./".$temp."/"); 
$import_file = $s[count($s)-1]; 

此代碼自動檢索在temp文件夾中的第三文件的名稱,所以只要有沒有其他文件在那裏它應該完美工作。

+1

它是一個不錯的主意,但'.'和'..'只存在於UNIX服務器(AFAIK)上,那麼如果這個腳本是在非Unix機器上運行呢?另外,在運行代碼時,我得到一個'Undefined offset:2'錯誤。 – Armitage2k

+0

@ Armitage2k好點。編輯。 – Toastrackenigma

+0

仍然出現'未定義的偏移量:0'錯誤。 'scandir'確實支持這種格式嗎? – Armitage2k

相關問題