2015-05-20 187 views
0

我一直在使用這個腳本,並且沒問題。我將txt文件轉換爲csv,並且出現了一些未知錯誤。注意:未定義偏移

function Importcsv($filename) { $row = 0; 
$col = 0; 

$handle = @fopen($filename, "r"); 
if ($handle) 
{ 
    while (($row = fgetcsv($handle, 4096)) !== false) 
    { 
     if (empty($fields)) 
     { 
      $fields = $row; 
      continue; 
     } 

     foreach ($row as $k=>$value) 
     { 
      $results[$col][$fields[$k]] = $value; 
     } 
     $col++; 
     unset($row); 
    } 
    if (!feof($handle)) 
    { 
     echo "Error: unexpected fgets() failn"; 
    } 
    fclose($handle); 
} 

return $results; } 


$filename = "tm_data.csv"; 
$csvArray = Importcsv($filename); 

foreach ($csvArray as $row) 
{ 
echo $row['CITY']; 
} 

請讓我知道你是否有任何想法或發現過類似的問題。

請參閱幾個錯誤行 注意:未定義抵消:386 /Applications/XAMPP/xamppfiles/htdocs/tm_marketing/index.php在線20

注意:未定義抵消:387 /應用/ XAMPP/xamppfiles/htdocs中/ tm_marketing/index.php的上線路20

注意:未定義偏移:388在/Applications/XAMPP/xamppfiles/htdocs/tm_marketing/index.php線20上

注意:未定義偏移:389在線20上的/Applications/XAMPP/xamppfiles/htdocs/tm_marketing/index.php

注意:未定義抵消:390 /Applications/XAMPP/xamppfiles/htdocs/tm_marketing/index.php在線20

感謝,

+0

發佈完整的錯誤消息,沒有它我們不能幫你。 – AntoineB

+0

請注意以下幾行錯誤消息:注意:未定義的偏移量:386在/Applications/XAMPP/xamppfiles/htdocs/tm_marketing/index.php上線20 注意:未定義的偏移量:387在/ Applications/XAMPP/xamppfiles /的htdocs/tm_marketing/index.php的上線路20 注意:未定義偏移:388在/Applications/XAMPP/xamppfiles/htdocs/tm_marketing/index.php線20上 注意:未定義偏移:389 /應用程序/ XAMPP /第20行的xamppfiles/htdocs/tm_marketing/index.php 注意:未定義的偏移量:390位於/Applications/XAMPP/xamppfiles/htdocs/tm_marketing/index.php第20行 – user4773611

+0

@ user4773611包含您的問題中的錯誤。你可以通過編輯你的問題來做到這一點。 – Epodax

回答

1

從張貼在我認爲問題(缺乏)信息第20行是:

$results[$col][$fields[$k]] = $value; 

看來你CSV文件的第一行包含比數據行少列。

第一行(列名稱)存儲在$fields中,它有386列。某些數據行包含超過386列(似乎爲391),對於$k以386開頭,$fields[$k]未定義,並觸發您發佈的通知。

解決方案由您決定。您可以通過添加缺少的列名稱或從違規行中刪除額外值來修復CSV文件。

您也可以修改代碼以執行上述任一操作(或者生成一些列名稱或忽略額外的值)。

您還應該檢查CSV文件是否被正確編碼。也許沒有額外的列和fgetcsv()錯誤地分割行。檢查文件中使用的分隔符,引號和轉義字符,並確保在調用fgetcsv()時使用相同的值。