0

csv ファイルを読み込んで、1 列目がキーになり、21 列目が値になるように、1 列目と 21 列目を連想配列に格納しようとしています。

後で、「キー」に基づいてレコードをプルしたいと思います。コードを含む PHP ファイルは、upload.php です。

$calls = array();
$file_handle = fopen($C1.".File.csv","r"); // $C1 is defined before.
 //Just appending something to the file name. This file exists. 
while (!feof($file_handle) ) {
    $line= fgetcsv($file_handle, 1024);
    $calls[$line[0]] = $line[20]; //Line 94 of this file

}
fclose($file_handle);
print_r($calls);

このエラーが発生します

Undefined offset: 20 in upload.php on line 94

どこが間違っているのですか。

4

1 に答える 1

1

インデックスがゼロの配列の 20 番目の「列」は次のようになります。$line[19]

コメント(およびその後の編集)に従って更新します。

エラーは、ループ中のある時点で明確に指摘されています$line[20]。各行に適切な数の列がある場合、私が考えることができる他の唯一の理由は、CSV ファイルの最後に空の行があることです。

例えば。

1.  foo, bar, baz
2.  a  , b  , c
3.                    <-- empty line as a result of carriage return

そのため...trim($line)!=''前にfgetcsv、および/または適切なエラー処理の一部として、配列の長さが読み取ろうとしている最大のインデックスよりも大きいことを確認する必要があります。

于 2013-03-13T22:11:52.730 に答える