2014-02-18 65 views
0

我正在從包含數千行的csv文件中讀取數據。PHP檢查數組索引是否已設置並且沒有超出限制

現在一些行的格式不正確,因此當我嘗試讀取循環中的特定索引時,出現未定義的偏移錯誤。

我想簡單地刪除這些行。爲此,我必須確定哪些線路會導致問題。

這裏是被循環內發生的事情:

$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元素,如果沒有,那麼顯示行號?我試過isset,但它不工作。

艾哈邁爾

回答

3
"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"; 
} 
0

你可以使用

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]);也應該工作。