我知道在PHP中使用变量和数组之前没有必要定义它们。但是当我运行以下代码时,我面临"未定义的变量 mat1"和"未定义的变量 mat2"错误:
for($i=0;$i<3;$i++)
{
for($j=0;$j<3;$j++)
{
$ans[$i][$j] = 0;
for($k=0;$k<3;$k++)
{
$ans[$i][$j] = $ans[$i][$j] + $mat1[$i][$k]*$mat2[$k][$j];
}
}
}
var_dump($ans);
我尝试用以下 2 行定义它们:
$mat1=array(array());
$mat2=array(array());
但错误已更改为"未定义的偏移量:..."错误。我的代码中缺少某些内容吗?!
为什么我收到未定义的变量错误?
因为你还没有定义任何东西。
只需使用
$mat1 = $mat2 = array(
0 => array(
0 => 1,
1 => 1,
2 => 1,
3 => 1,
4 => 1,
5 => 1,
),
1 => array(
0 => 2,
1 => 2,
2 => 2,
3 => 2,
4 => 2,
5 => 2,
),
2 => array(
0 => 3,
1 => 3,
2 => 3,
3 => 3,
4 => 3,
5 => 3,
)
);
并对其进行测试
数组与普通变量不同,因此您需要定义它,最重要的是,在访问数组的任何索引之前,数组中必须包含值。否则,您将获得未定义的偏移误差。
另一件事是,您可以简单地定义$mat1=array()
而不是使用$mat1=array(array())
这也适用于多维数组。
因此,除非您的数组在这些索引处确实有值(即使值为空),否则您将获得未定义的偏移量错误。
您仍然需要有数据才能使用数组。如果 mat1 只是一个空数组,那么尝试访问 $mat 1[1] 会给你一个未定义的偏移误差