PHP fopen 变量而不是字符串

PHP fopen variable instead of string

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

这是我的旧代码:

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

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

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

这是我的新代码:

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

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

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

Warning: fopen() expects parameter 1 to be a valid path, array given in

因为glob找到所有匹配模式的文件,它必须return一个数组。
而 fopen 一次只能处理一个,所以你需要一次喂一个:

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

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

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

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

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