Question

Je voudrais vérifier si le fichier csv contient un en-tête et ignorer l'en-tête.

Je dois vérifier si la première colonne n'est pas un caractère

le fichier csv a le format :avgTemperature, minTemperature, maxTemperature

$f = fopen("./uploads/" .$filename, "r");
$string = "avgTemperature";
if (fgetcsv($f)==$string){  
    // read the first line and ignore it
    fgets($f);
}
Était-ce utile?

La solution

Aller de votre commentaire et de l'idée que les données réelles sont des températures (c'est-à-dire des données numériques), si vous avez des en-têtes, ils seront des chaînes de texte et non des chiffres.Par conséquent, vous pouvez faire quelque chose comme ceci:

$f = fopen("./uploads/" .$filename, "r");

if(!($data = fgetcsv($f))) {
    return;    //most likely empty file
}

if(!is_numeric($data[0])) {
    //this is your header line - skip it - and read the next line
    $data = fgetcsv($f);
}

while($data) {
    //process a line of data
    ...
    //and read the next line
    $data = fgetcsv($f);
}

edit: Une version alternative de la dernière boucle ressemblerait à ceci:

do {
    //process a line of data
    ...
}
while ($data = fgetcsv($f));

Autres conseils

Je suppose que votre code complet utilise une boucle (while ou for).

En tant que tel, vous disposez de quelques options.

  • Sautez simplement la première ligne toujours.
  • Utilisez la logique pour tester le ligne d'en-tête puis sautez.

De toute façon, continue est la pièce maîtresse.

Pseudo-code PHP :

while (…) {
  if ($row == $header_row) {
    continue;
  }

  // data rows
}

MISE À JOUR

La logique permettant de déterminer si la première ligne est une ligne d'en-tête semble être une meilleure solution dans votre cas.Vous pouvez utiliser ce qui suit pour tester cela.

if ($row[0] == 'avgTemperature') {
  // header row
}

Note: Cela suppose que la première colonne de données est Température moyenne et son en-tête est Température moyenne.Ajustez si nécessaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top