2015-12-22 3 views
0

de suppression d'erreur que j'ai un code comme ceci:opérateur

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

Fondamentalement, il est d'ajouter de la valeur quotidienne pour chaque activité et chaque colonne pour obtenir le total compte. J'utilise '@' opérateur ici pour ne pas jeter l'avertissement. Y at-il une modification que je peux faire qui va supprimer l'opérateur '@' car ce n'est pas une bonne pratique de l'utiliser.

L'erreur que j'obtiens est Undefined index avec le nom de colonne et d'activité.

+1

Pourquoi vous SUPPRIMER LA? Utilisez 'try ... catch' pour un tel code erroné. – Parixit

+1

@Parixit accédant à l'index indéfini n'entraînera pas l'exception d'être jeté alors essayer/attraper n'aidera pas –

+0

@ jedrzej.kurylo Je sais. Je veux dire que si nous écrivons du code propre et net, il est vraiment difficile d'avoir un avertissement/avertissement. Oui, 'try ... catch' n'est pas de le supprimer, mais il supprimera uniquement les exceptions. – Parixit

Répondre

0

Les avertissements que vous supprimez peuvent être causés par des index inexistants dans $ this-> totalCounts. Vous pouvez les éviter en initialisant explicitement les champs de ce tableau.

Remplacer

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

avec

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