Pergunta

Eu gostaria de verificar se o arquivo csv que contém um cabeçalho e ignorar o cabeçalho.

Eu tenho que fazer uma verificação se a primeira coluna não é um personagem

arquivo csv tem o formato de :avgTemperature, minTemperature, maxTemperature

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

Solução

Vai partir seu comentário, e da ideia de que os dados reais de temperatura (i.e.dados numéricos), em caso afirmativo, em seguida, eles serão seqüências de caracteres de texto e não de números.Portanto, você pode fazer algo como isto:

$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: Uma versão alternativa do último ciclo teria esta aparência:

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

Outras dicas

Eu suponho que o seu código completo usa um loop (while ou for).

Como tal, você tem algumas opções.

  • Simplesmente ignore a primeira linha sempre.
  • Use a lógica para testar a linha de cabeçalho em seguida, avance.

De qualquer forma, continue é a peça-chave.

PHP pseudo-código:

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

  // data rows
}

ATUALIZAÇÃO

A lógica para determinar se a primeira linha é uma linha de cabeçalho parece ser uma melhor solução para o seu caso.Você pode usar o seguinte para testar isso.

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

Nota: Isso torna a suposição de que a primeira coluna de dados é avgTemperature e é de cabeçalho é avgTemperature.Ajuste conforme necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top