2017-02-27 2 views
-3

foreachとforループを使用してPHPでテーブルを印刷する方法については、LABの練習を行っています。しかし、私は今問題に出会った。ここでUmm ...定義されていないエラーが発生しました

The question let me to print a table like this.

私のコードです:誰でも助けることができる

<?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"; 

     ?> 

Finally, it warns me those notices although I can print out he table.

?お願いします?

+0

これは32行目ですか? – arkascha

+0

'isset($ subjectArray [$ i])'をチェックするだけです。あなたのループ内の要素の数が少なくてもループは10回繰り返されます。それはあなたが未定義のオフセット通知を得る理由です。 –

+0

echo "​​$ subjectArray [$ i] \ n"; これは32行です –

答えて

0

あなたsem1,2および3配列は、それぞれその中に5,4,3の要素を持っている($ subjectArray)をカウントしています。 しかし、$ maxSubnum = 10を定義すると、残りの要素を探しています。

以下を試してください。

<?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"; 

     ?> 
0

あなたはループではないmaxSubNumの間違った制限値を使用しますが

for ($i=0; $i < count($subjectArray)-1; $i++) { 
関連する問題