while循环中的第一个元素?

时间:2010-11-02 02:16:21

标签: php loops csv while-loop fgetcsv

我正在编写一个导入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"} 

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

3 个答案:

答案 0 :(得分:13)

这对你有用吗?

$row = 1;

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

    ++$row;
}

答案 1 :(得分:3)

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

答案 2 :(得分: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
}