2017-02-10 7 views
0

CSVファイルを一時フォルダに保存するスクリプトがあります。このフォルダでは、別のスクリプトが自分のDBにインポートするためにそれをピックアップするまで残っています。これは分離されたスクリプトであり、さまざまな理由で一時フォルダへの配置と連続するデータベースのインポートの両方を行うことはできません。PHP - foreach()なしでフォルダ内のファイルのみを選択しますか?

私は分離されたインポートスクリプトを持っているので、まず一時フォルダをスキャンして、インポートファイルを探してください。これは、フォルダ内の唯一のファイルですが、定義する。私の質問は今、ファイルのファイル名をどのようにして変数に代入し、後でデータベースのインポートに使うことができるのでしょうか?

foreach()ループを使用すると、配列で終わりますが、後で使用するための文字列が好きです。 scandir以来

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

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

関連する問題