【问题标题】:How to make the header row be skipped in my while loop using fgetcsv?如何使用 fgetcsv 在我的 while 循环中跳过标题行?
【发布时间】:2011-05-23 12:49:14
【问题描述】:

我无法获得我编写的新代码来跳过第一行(标题),就像我之前使用的代码一样(见底部)。

我没有收到任何错误,但无法让它省略第一行。

$file = fopen($uploadcsv,"r");
$column_headers = array();
$row_count = 0;
while(!feof($file)) {   
  if ($row_count==0){
    $column_headers = $file;
  } else {
    print_r(fgetcsv($file));
  }
  ++$row_count;
  }

fclose($file);

以下是略过表头的旧源码,供参考和比较。

$handle = fopen($uploadcsv, 'r');
$column_headers = array();
$row_count = 0;
while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) {
  if ($row_count==0){
    $column_headers = $data;
  } else {
    print_r($data);
  }
  ++$row_count;
}
fclose($handle);

【问题讨论】:

    标签: php file csv fgetcsv


    【解决方案1】:

    为什么还要数?只需在循环之前获取标题即可。

    $column_headers = fgetcsv($file);
    while(!feof($file)) {
       ...
    

    另外,您只是将文件指针分配给变量。

    【讨论】:

    • 请解释一下?所以不要使用$row_count==0?我需要将它分配给数组的 $data
    • 您决定用什么“$data”让我们大吃一惊?
    • 哦,对不起,如果您查看顶部的编码(旧编码),我将 $data 用于数组
    • @acctman:不,你不是。我所看到的只是一些临时变量。
    【解决方案2】:

    $row_count0 时,您没有读取任何行。

    改变

    if ($row_count==0){
        $column_headers = $file;  // just assigning file handle.
    }
    

    if ($row_count==0){
        $column_headers = fgetcsv($file); // read the row.
    }
    

    【讨论】:

    • 如何重写列标题检测当前的方式是给出一个空白输出
    猜你喜欢
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2013-01-29
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    相关资源
    最近更新 更多