fgetcsv不从csv文件返回数据

时间:2017-05-22 16:52:53

标签: php csv

// file opened with open before this
while ($dt = fgetcsv($dfp) !== FALSE) {
    $csvrows[] = $dt;
}

如果我转储$csvrows,我会得到一组bool,每个都是TRUE。如果我在循环中转储$dt$dt = TRUE

但这有效:

// file opened with open before this
while ($dt = fgetcsv($dfp) !== FALSE) {
    $csvrows[] = fgetcsv($dfp);
}

我将CSV文件中的数据很好地填充到$csvrows中(但我缺少数据行,因为在循环的评估语句中也会调用fgetcsv($dfp)

为什么我要解决以获取CSV文件中的所有数据?

PHP文档说fgetcsv返回的是一个数据数组,而不是一个bool。

1 个答案:

答案 0 :(得分:2)

这是一个operator precedence问题。您可以添加一些括号来指定正确的分组。

while (($dt = fgetcsv($dfp)) !== FALSE) {

更改表达式中的顺序也应该有效。

while (false !== $dt = fgetcsv($dfp)) {

正如目前所写,您将fgetcsv($dfp) !== FALSE的结果分配给$dt,因为比较的优先级高于分配。