很久很久以前,我创造了或者甚至可能借用了#39;我用来打开CSV文件并将内容放在数组中的一些代码。它现在生成以下警告并创建一个巨大的error.log文件:
[29-Jul-2014 16:35:47] PHP Warning: fgetcsv() expects parameter 1 to be resource, boolean given in /home/muskie/domains/muschamp.ca/public_html/Muskie/muskLib.php on line 9
这是功能:
// Since I often had to do this, now I can do it in a single line of code
function createArrayFromCSVFile($fileName)
{
$myArray = array();
$file = fopen($fileName, 'r');
while (($result = fgetcsv($file)) !== false)
{
$myArray[] = $result;
}
fclose($file);
return $myArray;
}
如何最好地修复此方法,以便它不会生成警告?代码本身运行,虽然烂番茄似乎不再让我使用他们的API但这是另一个问题...
我查看了the documentation和alternate method。这似乎是辩论最好的方法。我的网站主机上的PHP是否发生变化,我只需要另一个fgetscsv参数?
答案 0 :(得分:0)
错误的含义是,您在fopen()
功能中使用的CSV文件不存在或无效。
当您尝试打开无效/不存在的文件时,fopen();
将返回false。
请参阅:fopen。
要简化您的功能,您可以执行以下操作。
function createArrayFromCSVFile($fileName)
{
if(!file_exists($fileName)){
return false;
//or you could return an empty array
//return array();
}
$myArray = array_map('str_getcsv', file($fileName));
return $myArray;
}
但我建议添加一些错误检查/验证等。像file_exists()
或w / e。
修改强>
增加了一些验证。