fgetcsv()为每一行返回“true”

时间:2014-01-22 19:56:38

标签: php fgetcsv

我遇到了php fgetcsv()方法的问题。我只能得到值“1”而不是每行的数组。这是代码:

$row = 0;
$teststring='';
$handle = fopen($savepath,'r');
if($handle!==FALSE){
    while(($data = fgetcsv($handle,2000,'|')!==FALSE)){        //I am using '|' as the delimiter
        echo (string)$data;
        if($row!=0){
            foreach($data as $d){
                array_push($result['added'],$d);
            }
        }
        $row++;
    }
    fclose($handle);
}

我测试了3行csv文件,结果为“111”。当然,数组$ result ['added']没有值。任何人都可以知道发生了什么吗?谢谢。

1 个答案:

答案 0 :(得分:7)

操作顺序!

while(($data = fgetcsv($handle,2000,'|')!==FALSE)){

PHP将此行解释为:

  • 致电fgetcsv
  • 不进行强制转换,请将其与布尔值false
  • 进行比较
  • 将此比较结果分配给$data

这不是你想要的。你的parens放错了地方,你想要之前的比较:

while( ($data = fgetcsv($handle,2000,'|')) !== FALSE ){

我添加了额外的空格,使更改更加明显。