PHP检查数组索引是否已设置且不受限制

时间:2014-02-18 12:53:23

标签: php

我正在阅读包含数千行的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元素,如果没有则显示行号?我试过了但是它没有用。

艾哈迈尔

2 个答案:

答案 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]);也应该有用。