Compruebe el encabezado en CSV e Ignorar el encabezado en PHP
-
12-12-2019 - |
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); }
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.