我在php中遇到多维数组的未定义索引错误

时间:2018-10-30 10:19:20

标签: php arrays multidimensional-array php-5.3 undefined-index

我是php的新手,所以我试图编写一个添加两个3x3矩阵的程序。我在php代码中多次遇到未定义的符号错误。
有没有其他方法可以在php中定义多维数组。`
关于如何解决一维数组的问题,已经有许多程序。它们是默认值的硬编码。为数组中的每个元素提供默认值将很耗时。
这是我的代码:

    <html>
    <head></head>
    <body>
        <form action="matAdd.php" method="post">
            Enter values in first matrix:
            <table cellpadding=10 cellspacing=10>
            <tr>
            <td>
            <table>
                <tr><td colspan="3">Matrix 1</td>
                </tr>
                <tr>
                    <td><input type="number" name="m00" size="3" required/></td>
                    <td><input type="number" name="m01" size="3" required/></td>
                    <td><input type="number" name="m02" size="3" required/></td>
                </tr>
                <tr>
                    <td><input type="number" name="m10" size="3" required/></td>
                    <td><input type="number" name="m11" size="3" required/></td>
                    <td><input type="number" name="m12" size="3" required/></td>
                </tr>
                <tr>
                    <td><input type="number" name="m20" size="3" required/></td>
                    <td><input type="number" name="m21" size="3" required/></td>
                    <td><input type="number" name="m22" size="3" required/></td>
                </tr>
            </table>
            </td>
            <td>
            <table>
                <tr>
                    <td colspan="3">Matrix 2</td>
                </tr>
                <tr>
                    <td><input type="number" name="n00" size="3" required/></td>
                    <td><input type="number" name="n01" size="3" required/></td>
                    <td><input type="number" name="n02" size="3" required/></td>
                </tr>
                <tr>
                    <td><input type="number" name="n10" size="3" required/></td>
                    <td><input type="number" name="n11" size="3" required/></td>
                    <td><input type="number" name="n12" size="3" required/></td>
                </tr>
                <tr>
                    <td><input type="number" name="n20" size="3" required/></td>
                    <td><input type="number" name="n21" size="3" required/></td>
                    <td><input type="number" name="n22" size="3" required/></td>
                </tr>
            </table>
            </td>
            </tr>
            </table>
            <center><input type="submit" value="Add"/></center>
        </form>  
    </body>
</html>
    <?php 
            $m = array(array());
            $n =array(array());
            $sum= array(array());
            for($i=0;$i<3;$i++) 
            {
                for($j=0;$j<3;$j++)
                {
                    $m[$i][$j]=$_POST['m'.$i.$j];
                    $n[$i][$j]=$_POST['n'.$i.$j];
                    $sum[$i][$j]=$m[$i][$j]+$n[$i][$j];
                }
            }
            echo 'Addition is :';
            echo '<table border=1 style="border-collapse:collaspe">';
            for($i=0;$i<3;$i++)
            {
                echo '<tr>';
                for($j=0;$j<3;$j++)
                {
                    echo '<td>'.$sum[$i][$j].'</td>';
                }
                echo '</tr>';
            }
            echo '</table>';
    ?>

我在嵌套的for循环中遇到错误,在该循环中,我将post方法中的值转换为多维数组。

3 个答案:

答案 0 :(得分:0)

只需尝试更改以下内容

1。。通过

更改您的<form>
<form action=<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> method="post">

2。将名称属性添加到您的提交按钮

<input type="submit" name ="submit" value="Add"/>

3。。将您的php代码放入

if(isset($_POST['submit'])){
    $m = array(array());
    $n =array(array());
    //your code....
}

希望这可以解决您的问题

答案 1 :(得分:0)

一些解释。您的原始问题主要是由$_POST['m'.$i.$j]引起的。 在首次执行php脚本时,由于尚未发送任何形式的数据,并且还没有将命名的值添加到$POST变量中,因此尚未定义它们。

检查if(isset($_POST['submit'])) {基本上检查是否提交了任何包含数据的表格,并仅在{...}内部执行代码。

因此,如果您使代码看起来像

if(isset($_POST['submit'])){
//Your original php code goes here
}

它将起作用,因为您的代码仅在提交表单时执行。

这不是一个很好的解释,但这是我所能做的最好的

答案 2 :(得分:0)

我在php中遇到多维数组的未定义索引错误 描述:您的代码正确。只需将数组初始化为foolows。如果再次出现错误,请检查您的通知表

<?php 
      $m = array();
      $n =array();

?>