注意:未定义的偏移量:数组大小为2时为1

时间:2015-05-13 10:40:16

标签: php parsing csv file-upload

我有这个CSV文件:

german,6357787,hombre;
patricia,666565656,mujer;

这个PHP处理器:

if((!empty($_FILES["csv1"])) && ($_FILES['csv1']['error'] == 0)) {

      //CHECK NOMBRE

      $filename = basename($_FILES['csv1']['name']);

      // CHECK EXTENSIÓN

      $ext = substr($filename, strrpos($filename, '.') + 1);

      //CHECK FORMATO & MIMETYPE

      if (
        (
            ($ext == "csv")
        ) && (
            (in_array($_FILES['csv1']['type'],$mimes)) 
        )
        ) {

          //ANALISIS
          $csv=$_FILES['csv1']['tmp_name'];
          $file_handle = fopen($csv, "r");

            while (!feof($file_handle) ) {

            $line_of_text = fgets($file_handle);
            $parts = explode(';', $line_of_text);

            echo  $parts[0] . $parts[1]. "<BR>";

            }

            fclose($file_handle);

      } else {
         echo "No se ha adjuntado el archivo CSV. <br>Formato no reconocido";
      }
    } else {
     echo "No se ha adjuntado el archivo CSV. <br>El archivo no existe.";
}

当我向处理器发送我的CSV时,它会回显正确的信息(german,6351787,hombre<BR>patricia,666565656,mujer<BR>),但是在此回声下,它也会产生错误

  

注意:未定义的偏移量:1

如果我的文件有两条记录,并且它回显了一个数组大小为2,为什么$parts[1]会产生错误?

1 个答案:

答案 0 :(得分:0)

您的CSV文件在文件末尾有一个空行。

该空行被发送到explode(';', $line_of_text);,它返回一个包含一个空字符串的数组。

此时,$parts只有一个元素,其索引为0

这就是索引1不存在的原因,以及为什么会出现这个错误。