0

我正在尝试读取一个 csv 文件,然后将第一列和第 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 回答