未定义的偏移量与爆炸字符串数组的错误

时间:2013-08-09 04:38:38

标签: php mysqli explode

我遇到的问题可能是一个非常简单的问题,但我无法理解问题所在。

我使用fopen()加载csv文件,并将其分解为不同的行,将字符串加载到字符串数组中。我试图拆分每个字符串以将值插入sql数据库。

$ datalength是我的csv文件中的行数。第一行是列的标题,因此$ x从1开始。

for ($x=1;$x<$datalength;$x++)
    {
        $broken = explode(",",$lines[$x]);
        $field1 = $broken[0];
        $field2 = $broken[1];
        $field3 = $broken[2];
        $field4 = $broken[3];
        echo $division;
        $importdata = "INSERT INTO Teams (Field1,Field2,Field3,Field4)
        Values ($field1,$field2,$field3,$field4)";
    }

我一直收到以下错误(B​​TW,我正在使用WAMP):

 Notice: Undefined offset: 1 in C:\wamp\www\test 2 (html-index)\upload_file.php on line 45, 46, 47

第45-47行与$field2$field3的{​​{1}},$field4$broken[1]分配重合。我不明白为什么会这样。

我发现了什么东西?任何你认为可能会让我的生活更轻松的建议都会受到热烈的赞赏。

1 个答案:

答案 0 :(得分:-1)

  

我马上就错过了什么?

是。
非常必要的东西。

您是虚拟程序员。您的程序不是处理真实数据,而是处理虚数据。您可以想象您拥有的某些字符串可以展开并放入数组中。虽然不是。但是,出于某种原因,你仍然处于一个你想象中的虚拟世界,并且不会试图与真实世界取得联系。

您假设$lines[$x]包含逗号分隔的字符串。 您确认了吗?
您假设$broken包含四个元素的数组。 您确认了吗?

只需将它们打印出来即可。这很容易,它会立即带您进入现实世界 - 您将看到您处理的真实数据,而不是虚构的数据。并能够采取任何适当的措施。

var_dump()是最好的程序员的朋友。请与这个不可或缺的功能交朋友。

var_dump($lines[$x],$broken);

会清楚地告诉你,你的补偿有什么问题。