2010-07-05 64 views
1

我在一個CSV文件,用while循環讀取:PHP回聲問題,而在while循環

while (($data = fgetcsv($handle, null, ",")) !== FALSE) 

,我想跳過第一行,因爲這是標題行,我希望顯示屏幕「跳過第一行」。

if($data[0]=="title") 
echo "Title row..skipping<br />"; 
else 
//do stuff 

的問題是自while循環它打印出「標題行......跳過」一堆時間如下所示:

Checking row 0... 
Title row..skipping 
Title row..skipping 
Title row..skipping 
Title row..skipping 
Title row..skipping 
Title row..skipping 
Title row..skipping 
Checking row 1... 

我應該怎麼做,因此只能打印它出一次?它有什麼與PHP的輸出緩衝?

+0

你的輸出看起來很奇怪。你確定你的csv文件格式正確嗎? – Ben 2010-07-05 05:34:58

+1

發佈更多驗證碼。您的問題不在我們可以看到的部分。 – 2010-07-05 05:44:14

回答

0
if($data[0]=="title") { 
    if (!$skipped) { 
    echo "Title row..skipping<br />"; 
    $skipped = true; 
    } 
} 
else 
//do stuff 
+0

聰明;)我應該想到的 – 2010-07-05 06:34:57

1

或者調用一次fgetcsv($handle, null, ",")沒有分配,由一條線向前移動處理器:

fgetcsv($handle, null, ","); 

while (($data = fgetcsv($handle, null, ",")) !== FALSE) { 
    // do stuff 
} 
0

如果知道一定是你只需要跳過第一線即可;

if(!$skipped) 
{ 
    echo "Title row..skipping<br />"; 
    $skipped = true; 
} 
else 
//do stuff 
+0

注意:從Ast的答案引發; P – Poni 2010-07-05 05:48:50

+0

Aspired!=啓發。 = P – 2010-07-05 06:09:31

0

我覺得這是更優雅的使用的foreach:

foreach data as item { 
    if (item == "title") { 
    echo "Skipping title<br/>"; 
    } 
} 

你怎麼會有現在,你每次檢查if (data[0] == "title")你循環。 data[0]將永遠等於「標題」,所以它總是會評估爲真。你可以增加一個$index變量,並在循環底部附近做一些類似if (data[$index] == $title)然後$index++,但爲什麼當foreach基本上會爲你做。