Allora, ho bisogno di un suggerimento, che magari è una cavolata, ma per me che ho smesso di programmare php da 8 anni... no!
Vi spiego il problema:
ho un file di dati, che può o no avere un'intestazione. Esempio:
codice:
"T (JD)","Obj1","Ref1","Ref2","Ref3","Ref4"
2455994.2632870371,-0.2782,-0.2833,0.0415,0.2236,0.0841
2455994.2684953702,-0.2753,-0.2808,0.0453,0.2237,0.0766
2455994.2721296297,-0.2748,-0.2817,0.0420,0.2278,0.0776
2455994.2746296297,-0.2705,-0.2813,0.0426,0.2227,0.0808
2455994.2771296296,-0.2755,-0.2802,0.0435,0.2237,0.0776
2455994.2796180556,-0.2753,-0.2788,0.0395,0.2252,0.0785
2455994.2846296295,-0.2775,-0.2825,0.0487,0.2156,0.0825
2455994.2871412039,-0.2774,-0.2794,0.0407,0.2248,0.0784
Adesso, io devo fare delle operazioni con i dati in questo file, ma se ha l'intestazione, non riesco a capire come eliminare la riga non-numerica (che in genere comincia così come la si vede oppure con il classico simbolo di commento #) che genera sempre errore nello script.
Il codice che elabora la cosa è questo (rozzo, ma funzia, almeno...):
Codice PHP:
$data=file($data2);
foreach($data as $k => $v)
{
if(strpos($v, "\t")!==false)
{
$s="\t";
}
elseif(strpos($v, ",")!==false)
{
$s=",";
}
else
{
$s=" ";
}
$campo=explode($s, trim($v), 100);
foreach($campo as $b => $n)
{
if(!floatval($n)==0)
{
$valore[]=trim($n);
}
}
$somma=0;
$numconf=0;
for($i=2; $i<=$b;$i++)
{
$somma=$somma+$campo[$i];
$numconf=$numconf+1;
}
$somma=$somma/$b;
$jd=$campo[0];
$jd1[$k]=$jd;
if(!$numconf==0)
{
if($tipobs=='mag')
{
if($campo[1]<$campo[2])
{
$flux=($campo[1]-$somma);
}
else
{
$flux=($somma-$campo[1]);
}
}
else
{
if($somma==0)
{
$somma=1;
}
$flux=($campo[1]/$somma);
}
}
else
{
$flux=$campo[1]*-1;
}
all'inizio vedo i separatori di colonna quali sono, poi mi faccio l'array per la riga e il trattamento. Credo che per eliminare una riga non facente parte dei dati dovrei farlo prima... ma fare...COSA?
Grazie a chi mi aiuterà.