PHP fgetcsv()陷阱

我经常发现自己需要将数据从CSV文件提取到系统中。这可能是填写诸如邮政编码之类的基本数据,或者是使用新内容更新网站。我碰巧使用的系统决定了我如何导入CSV文件,但是通过使用该fgetcsv()函数,在PHP中编写快速解析器非常容易。

不幸的是,当使用此功能时,很容易错过一些非常重要的事情,并创建了非常无用的代码。请看下面的例子。乍一看似乎很好,但是代码的输出始终是运行一次然后停止。

$fh = fopen('awesome_csv_data.csv', "r");

 

while ($data = fgetcsv($fh, 0, ',') !== FALSE) {

echo count($data); // == 1

var_dump($data); // ==真

}

 

fclose($fh);

在上面的代码中将$data变量设置为TRUE。这是因为我们将$data的值设置为“ fgetcsv($fh,0,',')!== FALSE”的比较结果。为了避免这种优先顺序,我们只需要包装返回值,fgetcsv()然后在比较中使用它即可。

第一个例子应该这样写:产生正确的结果。

$fh = fopen('awesome_csv_data.csv', "r");

 

while (($data = fgetcsv($fh, 0, ',')) !== FALSE) {

echo count($data); // ==找到的记录数

var_dump($data); // ==数据

}

 

fclose($fh);

这是学习PHP中优先顺序的重要课程,值得一看,如果您的代码工作不正常,则值得一试。第一次遇到这个问题之后,直到我花了15分钟检查while循环中的CSV文件和代码中是否有错误,然后才发现我做错了什么。

以上是 PHP fgetcsv()陷阱 的全部内容, 来源链接: utcz.com/z/317524.html

回到顶部