1

わかりました、これが問題です。

if (!$fp=fopen($file,"r")) echo "The file could not be opened.<br/>";  
            while (( $data = fgetcsv ( $fp , 1000 , ',')) !== FALSE ) {
                // here, var_dump($data); shows the correct array
                $i = 0; 
                foreach ($data as $i=>$row ) {  
                   $matrix=explode( ',', $row);
                   // $matrix recieves only the first field of the csv line
                   // seems like I'm getting a field on each foreach iteration
                   // shouldn't I get the whole line each time?
                } //end foreach
            } //end while

ここでは問題はあまりわかりません。ちなみに、このコードは私のローカルマシンでは機能し、私のサーバーでは機能しません。どちらもLinuxであり、PHPのバージョンは同じです。

何かご意見は?ありがとうございました。

4

1 に答える 1

0

fgetscv()は、各行を配列として返します。だからあなたの問題はこれです:

$ dataは行であり、すでに配列になっています。while()ループの各反復は、行を返します。爆発する必要はありません。

$allRowsAsArray = array();
if (!$fp=fopen($file,"r")) echo "The file could not be opened.<br/>";  
while (( $data = fgetcsv ( $fp , 1000 , ',')) !== FALSE ) 
{
    $allRowsAsArray[] = $data;
}
print_r($allRowsAsArray); //Will return your entire csv as an array of rows, each row as an array.
于 2012-09-07T01:15:25.217 に答える