2010-07-05 5 views
1

я прочитал в файле CSV, используя время цикла:PHP эхо проблема в то время как в цикле в то время как

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

и я хочу, чтобы пропустить первую строку, так как это название строки и я хочу, чтобы отобразить на экран «первая строка пропущена».

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

Проблема заключается в том, так как его в цикле в то время как он печатает «Строка заголовка ... пропуск» кучу раз показано здесь:

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

+1

Опубликовать больше кода. Ваша проблема не в той части, которую мы можем видеть. –

ответ

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

умный;) Я должен был подумать об этом –

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

Примечание: Стремление от ответа Аста; P – Poni

+0

Aspired! = Inspired. = Р –

0

Я думаю, что было бы более элегантно использовать Еогеасп:

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

Как у вас есть сейчас, вы проверяете if (data[0] == "title") каждый раз, когда вы цикл. data[0] всегда будет равным «title», поэтому он всегда будет оценивать true. Вы можете увеличивать переменную $index и делать что-то вроде if (data[$index] == $title), а затем $index++ в нижней части цикла, но зачем это делать, когда foreach по существу сделает это за вас.

Смежные вопросы