2016-05-15 5 views
1

Я не знаю, почему я так много борюсь с этим, но я пытаюсь получить доступ к строке в массиве, возвращаемом fgetcsv. У меня есть этот код:Доступ к строке, возвращаемой fgetcsv

if(($handle = fopen($path, "r")) !== FALSE) 
{ 
    if(($data = fgetcsv($handle, "\t")) !== FALSE); 
    { 
     var_dump($data); 

     foreach($data as $row) 
     { 
      list($cc, $pc, $pn, $an1, $ac1, $an2, $ac2, $lat, $lon) = explode(" ", $row); 
      var_dump($row); 
     } 
    } 

    fclose($handle); 
} 

var_dump из $data выходов:

array(1) { 
    [0] => 
    string(46) "US  34050 FPO    AA  Erie 029         41.0375-111.6789  " 
} 

var_dump из $row выходов:

string(46) "US 34050 FPO    AA  Erie 029      41.0375 -111.6789 

Когда я запускаю программу, я получаю сообщение об ошибке, говорит Notice: undefined offset, в частности, из-за этой строки:

list($cc, $pc, $pn, $an1, $ac1, $an2, $ac2, $lat, $lon) = explode(" ", $row); 

У меня явно что-то отсутствует, но я не знаю, что это такое. Может кто-нибудь мне помочь?

ответ

0

РНР руководство показывает, что вы не передаете правильные аргументы fgetcsv():

array fgetcsv (resource $handle [, int $length = 0 [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\" ]]]]) 

Она нуждается в длину до ограничителя.

Неопределенное смещение вызвано тем фактом, что вы указываете слишком много параметров для списка по сравнению с результатом explode(). var_export(explode(" ", $row)); сделает это очевидным.

+0

Ugh. По какой-то причине я думал, что длина является необязательным аргументом. Что касается предоставления слишком большого количества параметров list ... * facepalm *. Оказывается, первые две записи этого CSV отформатированы немного иначе, чем остальные, и я не заметил. В любом случае, спасибо за вашу помощь. Теперь он работает! – LeviJames

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

  • Нет связанных вопросов^_^