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

I'm getting undefined index error for multidimensional array in php

提问人:Pritam Parab 提问时间:10/30/2018 最后编辑:Pritam Parab 更新时间:10/31/2018 访问量:655

问:

我是 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方法中获取到多维数组中。

多维数组 php-5.3 undefined-index

评论

1赞 Jonnix 10/30/2018
使用 PHP 的 “Notice: Undefined variable”, “Notice: Undefined index” 和 “Notice: Undefined offset” 的可能重复
0赞 Jaquarh 10/30/2018
什么是预期输入和预期输出?
0赞 Chris Lear 10/30/2018
而不是 ,你真的想要类似 的东西。$m = array(array())$m = array(array(), array(), array())
1赞 Eugene Anisiutkin 10/30/2018
嗯。。。我认为至少应该是<form><form method="post">
0赞 Pritam Parab 10/30/2018
@EugeneAnisiutkin是的,它就在那里,我忘了写,但错误仍然存在。

答:

0赞 Chirag 10/30/2018 #1

只需尝试更改以下操作即可

1. 更改你的<form>

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

阿拉伯数字。将 name 属性添加到“提交”按钮

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

3. 把你的PHP代码放进去

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

希望这能解决您的问题

评论

0赞 Eugene Anisiutkin 10/30/2018
只需将代码放入其中即可。主要问题就在那里)。好吧,现在随着用户代码的更改,它就在那里=)if(isset($_POST['submit'])) {//code here}
0赞 Chirag 10/30/2018
您是否在提交按钮中添加了 name 属性?
0赞 Chirag 10/30/2018
当您单击“添加”按钮时,您的矩阵是通过 POST 发送的,但是当您第一次运行它时,未设置帖子矩阵意味着(空)为什么在循环中它会产生错误未定义。
0赞 Eugene Anisiutkin 10/30/2018 #2

一点解释。您的 originall 问题主要是由 引起的。 在第一次执行 php 脚本时,它们没有被定义,因为还没有从表单发送任何数据,并且命名值还没有添加到变量中。$_POST['m'.$i.$j]$POST

该检查基本上检查是否提交了任何带有数据的表单,并执行其中的代码,前提是有。if(isset($_POST['submit'])) {{...}

因此,如果你让你的代码看起来像

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

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

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

0赞 WebguruInfosystems 10/31/2018 #3

我在 php 中收到多维数组的未定义索引错误 description : 你的代码是正确的。只需将数组初始化为傻瓜即可。如果再次出错,请检查您的通知表格

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

?>