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

问题描述 投票:-1回答:1

我有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 /在/ User / Lio / Documents / Eligio / Tutorials / PHP / Assignments / Assignment 3 / quotes.php在第32行

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

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

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

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

php offset
1个回答
0
投票

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

我建议更换以下内容:

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

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

应该工作!

快乐的编码!

© www.soinside.com 2019 - 2024. All rights reserved.