2015-05-20 3 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']; 
} 

Пожалуйста, дайте мне знать, если у вас есть какие-либо идеи или вы обнаружили подобные проблемы раньше.

Пожалуйста, смотрите несколько строк об ошибке Примечание: Undefined смещение: 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

Примечание: Undefined смещение: 389 in /Applications/XAMPP/xamppfiles/htdocs/tm_marketing/index.php в строке 20

Примечание: Undefined смещение: 390 в /Applications/XAMPP/xamppfiles/htdocs/tm_marketing/index.php на линии 20

Спасибо,

+0

Опубликовать полное сообщение об ошибке, без него мы не сможем вам помочь. – AntoineB

+0

См. Ниже несколько строк сообщений об ошибках: Примечание: Неопределенное смещение: 386 в /Applications/XAMPP/xamppfiles/htdocs/tm_marketing/index.php в строке 20 Примечание: Неопределенное смещение: 387 in/Applications/XAMPP/xamppfiles/HTDOCS/tm_marketing/index.php в строке 20 Примечание: Undefined смещение: 388 в /Applications/XAMPP/xamppfiles/htdocs/tm_marketing/index.php на линии 20 Примечание: Undefined смещение: 389 в/Применения/XAMPP/xamppfiles/htdocs/tm_marketing/index.php в строке 20 Примечание: Неопределенное смещение: 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() неправильно разбил строку. Проверьте разделители, цитаты и escape-символы, используемые в файле, и убедитесь, что вы используете те же значения в вызове fgetcsv().

Смежные вопросы