将文件读入表时未定义的偏移错误

时间:2014-07-03 19:27:13

标签: php offset

我有Undefined Offset错误,但我不知道出了什么问题。

这是代码

<?php

        $documentRoot = $_SERVER['DOCUMENT_ROOT'];
        $fileName = "$documentRoot/Tutorials/PHP/Assignments/Assignment 3/data/quote.txt";
        $filePointer = fopen($fileName, 'r');

        $lineCounter = 0;
        $display = "";

        while(true)
        {

            $line = fgets($filePointer);
            list($firstName, $lastName, $contactMethod, $phoneMail, $resideCity, $comments) = explode("|", $line);

            if (!isset($comments))
            {
                $comments = "";
            }

            $lineCounter++;

            if(feof($filePointer))
            {
                break;
            }

            if($lineCounter % 2 == 0)
            {
                $style = "style = 'background-color:white';";
            }
            else
            {
                $style = "style = 'background-color:lightgray';";
            }

            //Write to table

            print"<tr $style>";
            print"<td>$firstName</td>";
            print"<td>$lastName</td>";
            print"<td>$contactMethod</td>";
            print"<td>$phoneMail</td>";
            print"<td>$resideCity</td>";
            print"<td>$comments</td>";
            print"</tr>";
        }

            fclose($filePointer);




        ?>

我补充说:

            if (!isset($comments))
            {
                $comments = "";
            }

因为我认为出现偏移错误是因为我没有在评论中输入任何内容。但是,我仍然会收到此错误。

请帮忙。

以下是错误消息:

  

注意:未定义的偏移量:5个/ Users / Lio / Documents / Eligio / Tutorials / PHP / Assignments / Assignment 3 / quotes.php on the line 32

     

注意:未定义的偏移量:/用户/ Lio / Documents / Eligio的/ Tutorials / PHP /赋值/分配3 /第32行的quotes.php

     

注意:未定义的偏移量:3位于/ Users / Lio / Documents / Eligio / Tutorials / PHP / Assignments / Assignment 3 / quotes.php on the line 32

     

注意:未定义的偏移量:/用户/ Lio / Documents / Eligio / Tutorials / PHP / Assignments / Assignment 3 /第32行的quotes.php

     

注意:未定义的偏移量:/用户/ Lio / Documents / Eligio的/ Tutorials / PHP /赋值/分配3 /第32行的quotes.php

1 个答案:

答案 0 :(得分:0)

问题出在你的确定之前...所以当你爆炸并将结果传递给列表时......预计6个参数只会收到5个或更少,你就会得到错误。

我建议更换以下内容:

$line = fgets($filePointer);
$data=explode("|", $line);
while(count($data)<6) $data[]="";
list($firstName, $lastName, $contactMethod, $phoneMail, 
$resideCity, $comments) = $data;

这将为列表添加足够的数据以设置变量。

并且应该工作!

快乐的编码!