【问题标题】:I'm getting undefined index error for multidimensional array in php我在 php 中收到多维数组的未定义索引错误
【发布时间】:2019-04-03 08:42:24
【问题描述】:

我是 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 arrays multidimensional-array php-5.3 undefined-index


【解决方案1】:

尝试更改以下内容

1. 将您的&lt;form&gt; 更改为

<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....
}

希望这能解决您的问题

【讨论】:

  • 只需将代码放入if(isset($_POST['submit'])) {//code here} 即可。主要问题在那里)。好吧,现在有了更改的用户代码,它就在那里 =)
  • 您是否在提交按钮中添加了名称属性?
  • 当您单击添加按钮时,您的矩阵是通过 post 发送的。但是当您第一次运行它时,未设置 post 矩阵意味着(空)为什么在循环中它会产生未定义的错误。
【解决方案2】:

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

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

所以如果你让你的代码看起来像

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

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-11
      • 2015-12-05
      • 2015-09-08
      • 2011-02-10
      • 1970-01-01
      • 2012-03-20
      • 2011-11-15
      • 2012-09-30
      相关资源
      最近更新 更多