2016-05-15 1 views
1

私はなぜこのように苦労しているのか分かりませんが、fgetcsvから返された配列内の文字列にアクセスしようとしています。私はエラーを取得していたプログラムを実行するとfgetcsvから返された文字列へのアクセス

string(46) "US 34050 FPO    AA  Erie 029      41.0375 -111.6789 

if(($handle = fopen($path, "r")) !== FALSE) 
{ 
    if(($data = fgetcsv($handle, "\t")) !== FALSE); 
    { 
     var_dump($data); 

     foreach($data as $row) 
     { 
      list($cc, $pc, $pn, $an1, $ac1, $an2, $ac2, $lat, $lon) = explode(" ", $row); 
      var_dump($row); 
     } 
    } 

    fclose($handle); 
} 

var_dump$dataの収率:

array(1) { 
    [0] => 
    string(46) "US  34050 FPO    AA  Erie 029         41.0375-111.6789  " 
} 

var_dump$rowの利回り私はこのコードを持っていますNotice: undefined offsetと言います。具体的には、この行のためです:

list($cc, $pc, $pn, $an1, $ac1, $an2, $ac2, $lat, $lon) = explode(" ", $row); 

私は明らかに何かが不足していますが、それは何か分かりません。誰か助けてくれますか?

答えて

0

PHPマニュアルは、あなたがfgetcsv()に正しい引数を渡すしていないことを示しています

array fgetcsv (resource $handle [, int $length = 0 [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\" ]]]]) 

それは、区切り文字の前に長さを必要とします。

定義されていないオフセットは、explode()の結果と比較してリストに指定するパラメータが多すぎるために発生します。 var_export(explode(" ", $row));がそれを明らかにします。

+0

何らかの理由で私は長さがオプションの議論だと思った。あまりにも多くのパラメータを与えるためにlist ... * facepalm *。このCSVの最初の2つのエントリは、残りの部分とは少し異なる形式になっていて、気付かなかったことが判明しました。とにかく、あなたの助けに感謝します。それは今働いて! – LeviJames

関連する問題