2015-10-20 2 views
2

Почему я получаю пустой массив в конце?Почему я получаю пустой массив в конце?

Мой код PHP:

$name = $_FILES["csv"]["tmp_name"]; 
$file = fopen($name,"r"); 

while(!feof($file)){ 

    $row = fgetcsv($file); 

    $data = array(
     "1"  =>$row[0], 
     "2"  =>$row[1], 
     "3"  =>$row[2], 
     "4"  =>$row[3] 
    ); 

    echo "<pre>"; 
    print_r($data); 
} 
fclose($file); 

И мой результат:

 
Array 
(
    [1] => a 
    [2] => b 
    [3] => c 
    [4] => d 
) 

Array 
(
    [1] => e 
    [2] => f 
    [3] => g 
    [4] => h 
) 

Array 
(
    [1] => 
    [2] => 
    [3] => 
    [4] => 
) 

+2

Ваш файл может содержать пустой ряд. –

+0

нет, нет пустой строки –

+0

** Руководство php.net говорит, что **: пустая строка в CSV-файле будет возвращена как массив, содержащий одно поле ** null ** и не будет рассматриваться как ошибка. поэтому вы можете избежать этой проблемы, поставив пустое состояние перед добавлением $ row в свой массив. –

ответ

0

Попробуйте Ниже code.If еще он возвращает пустой массив в конце, это означает, что ваш файл CSV МАЕ имеют пустое пространство в одной из ячеек последней строки.

$name = $_FILES["csv"]["tmp_name"]; 

$file = fopen($name,"r"); 

while (($data = fgetcsv($file , 1000, ",")) !== FALSE) { 

     echo "<pre>"; 

     print_r($data); 

     echo "</pre>"; 

} 

fclose($file); 
+0

на самом деле я хочу назначить данные CSV новому массиву и вставить его в mysql .. над моим кодом работает отлично , только проблема - пустой массив. –

+0

Поскольку вы уверены, что ваш файл csv не содержит пустую строку, почему вы не можете попробовать попробовать эту часть кода. Если вы все равно получаете пустой массив, то я уверен, что есть пустая строка. –

+0

Спасибо, это сработало хорошо. Я переназначил его на новый массив и нажал на базу данных. Еще раз спасибо. –

0

Вы можете просто использовать функцию «array_filter», чтобы удалить пустой массив, пожалуйста найти ссылку с полным кодом требуется: https://eval.in/640133

Вам просто нужно отобразить и отфильтровать результирующий массив, чтобы удалить пустой массив.

Thanks

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