【问题标题】:First element in a while loop?while循环中的第一个元素?
【发布时间】:2011-05-03 17:36:45
【问题描述】:

我正在编写一个导入 csv 并插入到表中的 PHP 脚本,但我需要获取第一行,这样我才能拥有字段名称..这是我的 csv

id  artist          song           
11  NewBee          great stuff
10  anotherNewbee   even better   
6    NewArtist       New song

如您所见,第一行是我需要的字段的名称。这是我的循环

$handle = fopen('csvs/'.$_FILES["csv"]["name"], 'r');

while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
 print_r($data); 
 //do something with it but i need the first time around 


 array(3) { [0]=> string(2) "id" [1]=> string(6) "artist" [2]=> string(4) "song" } 
 array(3) { [0]=> string(2) "11" [1]=> string(6) "NewBee" [2]=> string(1) "great stuff" }  
 array(3) { [0]=> string(2) "10" [1]=> string(13) "anotherNewbee" [2]=> string(1) "even better"} 

我如何获得第一个并将它们放入变量中并使用插入语句中的这些字段继续数据循环

【问题讨论】:

    标签: php loops csv while-loop fgetcsv


    【解决方案1】:

    这对你有用吗?

    $row = 1;
    
    while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
        if($row == 1) {
            // do something
        }
        else
        {
            // do something
        }
    
        ++$row;
    }
    

    【讨论】:

    • 使用 Markdown 来格式化你的帖子,这样你的代码就更易读了(我已经为你做了)。 This page shows how.
    【解决方案2】:

    deepsat 或 mattmoon9 的方法都可以正常工作。这是mattmoon9's answer 在代码中的结构(也基于我对答案的评论):

    $handle = fopen('csvs/'.$_FILES["csv"]["name"], 'r');
    
    if (($columns = fgetcsv($handle, 1000, ',')) !== false) {
        while (($data = fgetcsv($handle, 1000, ',')) !== false) {
            // Process data
        }
    
        // Insert into database using $columns as table column names
    } else {
        // The file couldn't be parsed as CSV
    }
    

    【讨论】:

      【解决方案3】:

      在您的 while 块之前,只需运行一次 fgetcsv 函数并存储字段标题。

      【讨论】:

      • +1 当然,应该执行一个简单的!== false 检查,以防第一行不是CSV 列格式。如果文件不是 CSV,则也可以完全跳过 while 循环。
      猜你喜欢
      • 2020-07-19
      • 2017-11-11
      • 2017-09-18
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多