// 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。
答案 0 :(得分:2)
这是一个operator precedence问题。您可以添加一些括号来指定正确的分组。
while (($dt = fgetcsv($dfp)) !== FALSE) {
更改表达式中的顺序也应该有效。
while (false !== $dt = fgetcsv($dfp)) {
正如目前所写,您将fgetcsv($dfp) !== FALSE
的结果分配给$dt
,因为比较的优先级高于分配。