2017-02-10 40 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

相关问题