2015-12-22 40 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;