如何修复我的createArrayFromCSVFile函数?

时间:2014-08-12 18:50:41

标签: php arrays csv

很久很久以前,我创造了或者甚至可能借用了#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 documentationalternate method。这似乎是辩论最好的方法。我的网站主机上的PHP是否发生变化,我只需要另一个fgetscsv参数?

1 个答案:

答案 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。

修改
增加了一些验证。