簡體   English   中英

在while循環中的PHP回顯問題

[英]PHP echo issue while in a while loop

我通過使用while循環讀取了一個csv文件:

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的輸出緩沖有關嗎?

或調用一次fgetcsv($handle, null, ",")而不進行賦值,將處理程序向前移動一行:

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

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

如果您確定只需要跳過第一行,那么;

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

我認為使用foreach會更優雅:

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

您現在的狀態如何,每次循環時都要檢查if (data[0] == "title") data[0]將始終等於“標題”,因此它將始終為true。 您可以增加$index變量的大小,並執行類似if (data[$index] == $title)然后在循環的底部附近進行$index++的操作,但是為什么在foreach本質上會為您執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM