提问人:Pritam Parab 提问时间:10/30/2018 最后编辑:Pritam Parab 更新时间:10/31/2018 访问量:655
我在 php 中收到多维数组的未定义索引错误
I'm getting undefined index error for multidimensional array in php
问:
我是 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方法中获取到多维数组中。
答:
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();
?>
评论
$m = array(array())
$m = array(array(), array(), array())
<form>
<form method="post">