Pregunta

Me gustaría verificar si el archivo CSV contiene un encabezado e ignore el encabezado.

Tengo que hacer un cheque si la primera columna no es un personaje

archivo CSV tiene formato: AvgTemperature, Mintemperature, MaxMemperature

$f = fopen("./uploads/" .$filename, "r");
$string = "avgTemperature";
if (fgetcsv($f)==$string){  
    // read the first line and ignore it
    fgets($f);
}
¿Fue útil?

Solución

Vayendo de su comentario y de la idea de que los datos reales son las temperaturas (es decir, los datos numéricos), si tiene encabezados, entonces serán cadenas de texto y no números.Por lo tanto, puedes hacer algo como esto:

$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);
}

Editar: Una versión alternativa del último bucle se vería así:

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

Otros consejos

Supongo que su código completo utiliza un bucle (while o generacodiCodeGode).

Como tal, tiene algunas opciones.

  • Simplemente salte la primera fila siempre .
  • Use la lógica para probar para la fila de encabezado Luego, salte.

De cualquier manera, for es la pieza de llave.

php pseudo código:

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

  // data rows
}

Actualización

La lógica para determinar si la primera fila es una fila de encabezado parece una mejor solución en su caso.Puede usar lo siguiente para probarlo.

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

Nota: Esto hace que la suposición de que la primera columna de datos es avgtemperature y su encabezado es avgtemperature .Ajustar según sea necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top