为什么我收到Undefined Variable错误?

时间:2014-12-16 04:22:39

标签: php arrays

我知道在PHP中使用它们之前没有必要定义变量和数组。但是当我运行以下代码时,我正面临'Undefined Variable mat1'和'Undefined Variable 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);

我尝试用以下两行来定义它们:

$mat1=array(array());
$mat2=array(array());

但错误已更改为“未定义偏移量:...”错误。 我在代码中遗漏了什么吗?!

3 个答案:

答案 0 :(得分:1)

  

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

因为你还没有定义任何东西。

只需使用

$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, 
            )
    );

并测试它

答案 1 :(得分:1)

数组与普通变量不同,所以你需要定义它,最重要的是在访问数组的任何索引之前,数组必须有值。否则你将得到未定义的偏移误差。

Anotherthing是指,您可以简单地定义$mat1=array(array()),而不是使用$mat1=array(),这也适用于多维数组。

所以除非你的数组实际上有这些索引的值(即使是空值),否则你将得到未定义的偏移量错误。

答案 2 :(得分:0)

您仍需要拥有数据才能使用数组。如果mat1只是一个空数组,那么尝试访问$ mat1 [1]会得到未定义的偏移量错误