我正在使用类来对矩阵进行一些计算,在这种情况下:获取每列的总和。
总和输出是正确的,如果我隐藏通知,问题就解决了,但从逻辑上讲,我更喜欢修正。
在PHP 5.3中,我在这个函数中得到了一些注意事项:
Notice: Undefined offset: 0
Notice: Undefined offset: 0
Notice: Undefined offset: 1
脚本
function sum()
{
foreach($this->numbers as $i => $rows)
{
foreach($rows as $j => $number)
{
$this->sum[0][$j] += $number; //notices here
}
}
$the_sum = new matrix($this->sum, 1, $this->get_num_columns());
return $the_sum;
}
矩阵
1 | 4
0.25 | 1
var_dump($this->numbers);
array
0 =>
array
0 => int 1
1 => float 4
1 =>
array
0 => float 0.25
1 => int 1
和
$this->get_num_columns() // 2
有任何想法纠正这些通知吗?
感谢
答案 0 :(得分:3)
是的,发生通知是因为您要添加数字的变量中没有初始值。您应检查该号码是否存在并在向其添加号码之前对其进行初始化。 (注意,这不会改善您的结果,但最好初始化变量)。
function sum()
{
foreach($this->numbers as $i => $rows)
{
foreach($rows as $j => $number)
{
if (!isset($this->sum[0][$j])) $this->sum[0][$j] = 0;
$this->sum[0][$j] += $number; //no notices here
}
}
$the_sum = new matrix($this->sum, 1, $this->get_num_columns());
return $the_sum;
}
Matrix
,而不是matrix
。array_fill()
很好地完成了这项工作。