drap5081683 2014-01-22 19:56
浏览 25
已采纳

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

I am having a problem with php fgetcsv() method. I can only get the value "1" instead of an array for each line. Here is the code:

$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);
}

I tested a 3-line csv file and the result will be "111". Of course there is no value in array $result['added']. Could any body know what is going on? Thank you.

  • 写回答

1条回答 默认 最新

  • dqteh7347 2014-01-22 20:06
    关注

    Order of operations!

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

    PHP is interpreting this line as:

    • Call fgetcsv
    • Without casting, compare it to boolean false
    • Assign the result of this comparison to $data

    This isn't what you want. Your parens are misplaced, you want the last one before the comparison:

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

    I've added extra spaces to make the change more obvious.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘