我正在尝试读取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
我哪里错了。
答案 0 :(得分:1)
零索引数组中的第二十个“列”将为$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
和/或作为良好错误处理的一部分检查数组的长度是否大于你试图读取的最高索引。