为什么我收到未定义的变量错误


Why I'm getting Undefined Variable errors?

我知道在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] 会给你一个未定义的偏移误差