Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 嗯…我遇到了一个未定义的错误_Php - Fatal编程技术网

Php 嗯…我遇到了一个未定义的错误

Php 嗯…我遇到了一个未定义的错误,php,Php,我正在做一个关于使用foreach和for循环在PHP中打印表的实验练习。但我现在遇到了问题 这是我的密码: <?php $subjects = array( "sem1" => array("Prog", "DP", "NF", "ENG", "SDD"), "sem2" => array("IP", "DMS", "OOP", "SA"), "sem3" => array("I

我正在做一个关于使用foreach和for循环在PHP中打印表的实验练习。但我现在遇到了问题

这是我的密码:

<?php

        $subjects = array(
            "sem1" => array("Prog", "DP", "NF", "ENG", "SDD"),
            "sem2" => array("IP", "DMS", "OOP", "SA"),
            "sem3" => array("INSP", "SAP", "ITP"),
        );

        //maximum number of subjects
        $maxSubNum = 10;

        //creating table
        echo "<table border='1'>";
            //loop the array
            foreach ($subjects as $sem => $subjectArray) {
                //print <tr>
                echo "<tr>";
                //print semeester number in <td>, bold the text
                echo "<td><b>$sem</b></td>\n";
                //loop 10 times
                for ($i=0; $i < $maxSubNum; $i++) {
                    //check if subject exists
                    if (isset($subjectArray)) {
                        //print subject in <td>
                        echo "<td>$subjectArray[$i]</td>\n";
                    } else {
                        //print empty in <td>
                        echo "<td></td>\n";
                    }
                }
                //closing <tr>
                echo "</tr>\n";
            }
        echo "</table>\n";

        ?>

您对循环使用了错误的限制,不是maxSubNum,而是count($subjectArray)

($i=0;$i{
您的sem1,2和3数组中分别有5,4,3个元素。 但是,当您定义$maxSubnum=10时,php将查找其他元素

试试下面的方法

<?php

        $subjects = array(
            "sem1" => array("Prog", "DP", "NF", "ENG", "SDD"),
            "sem2" => array("IP", "DMS", "OOP", "SA"),
            "sem3" => array("INSP", "SAP", "ITP"),
        );



        //creating table
        echo "<table border='1'>";
            //loop the array
            foreach ($subjects as $sem => $subjectArray) {
                //print <tr>
                echo "<tr>";
                //print semeester number in <td>, bold the text
                echo "<td><b>$sem</b></td>\n";
                //don't have to loop 10 times
                 //maximum number of subjects
                 $maxSubNum = count($subjectArray);
                for ($i=0; $i < $maxSubNum; $i++) {
                    //check if subject exists
                    if (isset($subjectArray)) {
                        //print subject in <td>
                        echo "<td>$subjectArray[$i]</td>\n";
                    } else {
                        //print empty in <td>
                        echo "<td></td>\n";
                    }
                }
                //closing <tr>
                echo "</tr>\n";
            }
        echo "</table>\n";

        ?>

哪一行是第32行?只需检查
isset($subjectArray[$i])
。当数组中的元素数量少于该数量时,循环正在迭代10次。这就是为什么会出现未定义偏移量通知echo“$subjectArray[$i]\n”;这是第32行32@HarrisChan你有下面的答案。检查并标记一个对你正确的答案
<?php

        $subjects = array(
            "sem1" => array("Prog", "DP", "NF", "ENG", "SDD"),
            "sem2" => array("IP", "DMS", "OOP", "SA"),
            "sem3" => array("INSP", "SAP", "ITP"),
        );



        //creating table
        echo "<table border='1'>";
            //loop the array
            foreach ($subjects as $sem => $subjectArray) {
                //print <tr>
                echo "<tr>";
                //print semeester number in <td>, bold the text
                echo "<td><b>$sem</b></td>\n";
                //don't have to loop 10 times
                 //maximum number of subjects
                 $maxSubNum = count($subjectArray);
                for ($i=0; $i < $maxSubNum; $i++) {
                    //check if subject exists
                    if (isset($subjectArray)) {
                        //print subject in <td>
                        echo "<td>$subjectArray[$i]</td>\n";
                    } else {
                        //print empty in <td>
                        echo "<td></td>\n";
                    }
                }
                //closing <tr>
                echo "</tr>\n";
            }
        echo "</table>\n";

        ?>