2010-07-05 6 views
1

je l'ai lu dans un fichier csv en utilisant une boucle while:problème écho PHP alors que dans une boucle while

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

et je veux sauter la première ligne parce que c'est la ligne de titre et je veux afficher sur l'écran "première ligne sautée".

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

Le problème est depuis son dans une boucle alors qu'il imprime « ligne de titre ... sauter » un tas de fois montré ici:

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... 

Que dois-je faire, il imprime seulement elle une fois? cela a-t-il quelque chose à voir avec le tampon de sortie de php?

+0

Votre sortie semble vraiment étrange. Êtes-vous sûr que votre fichier csv est formaté correctement? – Ben

+1

Post plus de code. Votre problème n'est pas dans la partie que nous pouvons voir. –

Répondre

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

intelligent;) J'aurais dû penser à cela –

1

ou appelez fgetcsv($handle, null, ",") une fois sans affectation, pour déplacer le gestionnaire avant d'une ligne:

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

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

Si vous connaissez un certain que vous ne devez sauter la première ligne, puis;

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

Note: Aspiré de la réponse d'Ast; P – Poni

+0

Aspiré! = Inspiré. = P –

0

Je pense qu'il serait plus élégant d'utiliser foreach:

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

Comment vous l'avez maintenant, vous vérifiez if (data[0] == "title") chaque fois que la boucle vous. data[0] sera toujours égal à "title", donc il sera toujours évalué à true. Vous pouvez incrémenter une variable $index et faire quelque chose comme if (data[$index] == $title) puis $index++ près du bas de la boucle, mais pourquoi faire cela quand foreach fera essentiellement cela pour vous.

Questions connexes