2015-09-27 10 views
5

Durante l'iterazione su un file csv utilizzando PHP SplFileObject e il flag READ_CSV ottengo una riga aggiuntiva con un valore null. C'è un modo per rimuovere questa linea automaticamente?Come rimuovere la riga aggiuntiva quando si utilizza il flag PHP SplFileObject e READ_CSV?

$file = new SplFileObject(__DIR__.'/technologies.csv', 'r'); 
$file->setFlags(SplFileObject::READ_CSV); 
foreach ($file as $row) { 
    var_dump($row); 
} 

Ciò produrrà una riga con un valore null.

... 
array(1) { 
    [0] => 
    NULL 
} 

risposta

6

si desidera impostare anche la bandiera SplFileObject::SKIP_EMPTY, e per questo di lavorare anche la bandiera SplFileObject::READ_AHEAD.

Il flag SplFileObject::SKIP_EMPTY fa ciò che dice sulla latta: salta le righe vuote. Una nuova riga finale nel tuo file conta come una riga vuota.

(parte: SplFileObject::READ_AHEAD è necessaria affinché SplFileObject::SKIP_EMPTY può fare il suo lavoro La riga successiva deve essere letto, internamente, in modo che PHP può determinare se è vuoto o meno..)


Quindi, il tuo codice sarà simile (inserito su più righe in modo da poterlo leggere):

$file->setFlags(SplFileObject::READ_CSV | 
       SplFileObject::SKIP_EMPTY | 
       SplFileObject::READ_AHEAD); 
Problemi correlati