注意:未定义的偏移量

时间:2014-12-15 12:03:07

标签: php html arrays

请尝试输入8个团队的积分,只需一个表格。我希望在表单提交后进行比较并获得最高分。我已经创建了表单,但是我遇到了一些问题。我得到"未定义的偏移量:8"错误。但是球队的得分和名字都很完美。这是我的HTML代码

<div class="container">
             <form method="post" action="../_libs/test.php">
            <?php
             foreach($teams as $arr)
             {
              ?>

                    <div class="row team_result">

                        <div class="col-md-8">

                          <div class="row">
                            <div class="col-md-3"> <img class="img img-thumbnail" src="../_images/<?php echo $arr['Team_Logo']; ?>" width="50" height="50"> </div>

                            <div class="col-md-3"> <label> <?php echo $arr['Team_Name']; ?> </label> </div>

                            <div class="col-md-3">
                                <div class="input-group">
                                    <input type="text" class="form-control" name="points[]" placeholder="points">
                                </div>
                           <input type="text" name="Name[]" id="" value="<?php echo $arr['Team_Name'] ?>"
             style="display:none" >
                           </div>


                           </div>

                        </div>




                    </div>

              <?php  
             }

            ?>
            <div class="col-lg-6 col-lg-offset-4"> <input type="submit" class="btn btn-primary" name="submit" value="Post"> </div>
            </form>
            </div>

和PHP代码

<?php

 //echo json_encode($_POST);

 if(!empty($_POST['Name'])){
        $team=$_POST['Name'];
        $teams=count($team);
             for($i=0; $i <=  $teams; $i++)
                   {
                       echo $team[$i] .",". $_POST['points'][$i]."<br>";
                     // echo $teams;
                   }

 }


?>

2 个答案:

答案 0 :(得分:0)

您的for循环应具有条件$i < $teams。您的数组的索引始终为0索引,但数组的计数始终以1开始。您的循环将超出数组的范围。

<?php
    //echo json_encode($_POST);

    if(!empty($_POST['Name'])){
        $team=$_POST['Name'];
        $teams=count($team);
        for($i=0; $i < $teams; $i++)
        {
            echo $team[$i] .",". $_POST['points'][$i]."<br>";
            // echo $teams;
        }
    }

?>

答案 1 :(得分:0)

在for循环中,您只需使用<,而不是<=

for ($i = 0; $i < $teams; $i++)

当您使用<=时,您有8个团队,但循环中有9个迭代($i等于0,1,2,3,4,5,6,7和8) 。最后一个是未定义的。