2015-12-22 34 views
0

我有这样的代码:删除错误抑制操作

foreach ($this->dayCounts as $activity => $day) { 
    foreach ($day as $date => $columns) { 
     foreach ($columns as $column => $value) { 
      @$this->totalCounts[$activity][$column] += $value; 
     } 
    } 
} 

基本上,它是为每个活动增加每日的值,每一列获得总计数。我在这里使用'@'运算符不要抛出警告。是否有任何修改,我可以删除'@'运营商,因为它不是一个好习惯。

我得到的错误是Undefined index与列和活动名称。

+1

为什么要抑制?对于这种错误的代码,使用'try ... catch'。 – Parixit

+1

@Parixit访问未定义的索引不会导致抛出异常,所以try/catch不会帮助 –

+0

@ jedrzej.kurylo我知道。我的意思是,如果我们写出整洁干净的代码,那么很难有任何警告/通知。是的,'try ... catch'不是为了压制它,而是只会抑制异常。 – Parixit

回答

0

警告你正在压制可能是由于$ this-> totalCounts数组中不存在的索引造成的。你可以通过明确地初始化这个数组的字段来避免它们。

更换

@$this->totalCounts[$activity][$column] += $value; 

if (!isset($this->totalCounts[$activity][$column])) { 
    $this->totalCounts[$activity][$column] = 0; 
} 
$this->totalCounts[$activity] += $value;