为什么我收到Undefined Variable错误?

I know that it's not necessary to define variables and arrays before using them in PHP. But I'm facing 'Undefined Variable mat1' and 'Undefined Variable mat2' errors when I run the following code:

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

I tried to define them with following 2 lines:

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

But errors were changed to 'Undefined offset: ...' errors. Am I missing something in my code?!

Why I'm getting Undefined Variable errors?

Because you haven't defined anything.

Just use

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

And test it

You still have to have data in order to use the arrays. If mat1 is just an empty array then trying to access $mat1[1] will give you that undefined offset error

Arrays are different than normal variables so you need to define it and most importantly before accessing any index of an array it is necessary for the array to have values in it. Otherwise you will get undefined offset error.

Anotherthing is that, instead of using $mat1=array(array()) you can simply define $mat1=array() this will work for multidimensional arrays also.

So unless your array actually have values at those indexes (even if empty values), you will get undefined offset error.