PHP fopen变量而不是字符串

时间:2018-03-20 10:58:10

标签: php fopen glob

我正在尝试使我的脚本动态化并寻找一种通过通配符获取文件数据的方法。

这是我的旧代码:

#process .csv into the database
if(($handle = fopen("9_filename.csv", "r")))

这里我只是通过一个字符串抓取一个文件。工作良好。但它是静态的,我需要每周处理20个文件,这会改变文件名中的日历周。

因此经过一些研究后我找到了“glob”函数,它允许我设置通配符。所以我用“glob”函数分配一个变量。 var_dump返回正确的文件名“9_filename.csv”。所以字符串存在。

这是我的新代码:

#variables
$file = glob("*_filename.csv");

#process .csv into the database
if(($handle = fopen($file, "r")))

不幸的是,结果我收到以下错误:

  

警告:fopen()要求参数1为有效路径,给定数组   在

2 个答案:

答案 0 :(得分:4)

由于glob找到所有匹配模式的文件,因此必须返回一个数组 并且fopen一次只能处理一个,所以你需要一次一个地处理它们:

#variables
$files = glob("*_filename.csv");

foreach($files as $file){
    #process .csv into the database
    if(($handle = fopen($file, "r")))
}

答案 1 :(得分:0)

glob()函数返回与指定模式匹配的文件名或目录数组。 所以一旦你得到一个数组,你需要遍历每个数组。 在这种情况下,您可以使用

if(($handle = fopen("9_filename.csv", "r")))

其中9_filename.csv将是数组值的一个。