我正在阅读包含数千行的csv文件。
现在有些行没有正确格式化,因此当我尝试读取循环中的特定索引时,我得到未定义的偏移错误。
我想简单地删除这些行。为此,我必须确定哪些线路导致问题。
以下是循环中发生的事情:
$i=0;
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 2048,",");
$idx=$line_of_text[5];
$i++;
//do something else
}
代码工作正常,但我得到10-15个错误Undefined offset: 5 in filepath
现在很难通过查看文件来确定这些行。那么有没有办法检查该行是否包含索引5元素,如果没有则显示行号?我试过了但是它没有用。
艾哈迈尔
答案 0 :(得分:4)
"I tried isset but it is not working"
isset
必须有效。试试这个:
if(isset($line_of_text[5]))
{
$idx=$line_of_text[5];
}
else
{
print "incorrect line: $i\n";
}
答案 1 :(得分:1)
您可以使用
if( array_key_exists(5, $line_of_text) ) {
$idx=$line_of_text[5];
} else {
print "incorrect line: $i\n";
}
或
if ( count($line_of_text) >= 6 ) {
$idx=$line_of_text[5];
} else {
print "incorrect line: $i\n";
}
但isset($line_of_text[5]);
也应该有用。