Рефакторинг логики PHP Array - PullRequest
3 голосов
/ 30 апреля 2010

Рефакторинг логики PHP Array

Я пытаюсь изменить свой код ... Это PHP ...

У меня есть следующее:

$totals[] = "Total";
$totals[] = $counts['hole'][1] + $counts['warn'][1] + $counts['info'][1] + $counts['crit'][1];
$totals[] = $counts['hole'][2] + $counts['warn'][2] + $counts['info'][2] + $counts['crit'][2];
$totals[] = $counts['hole'][3] + $counts['warn'][3] + $counts['info'][3] + $counts['crit'][3];
$totals[] = $counts['hole'][4] + $counts['warn'][4] + $counts['info'][4] + $counts['crit'][4];
$totals[] = $counts['hole'][5] + $counts['warn'][5] + $counts['info'][5] + $counts['crit'][5];
$totals[] = $counts['hole'][6] + $counts['warn'][6] + $counts['info'][6] + $counts['crit'][6];

Почему это не работает?

for($i; $i < 6; $i++ ){
    foreach( $severity as $sev ){
        $totals[$i] = $totals[$i] + $counts[$sev][$i];
    }
}

Ответы [ 3 ]

1 голос
/ 30 апреля 2010

Индексы варьируются от 1 до 6 (включительно), поэтому цикл for должен быть похож на

for($i = 1; $i <= 6; $i++ ){
   ....

Кстати, вы могли бы использовать

$totals[$i] += $counts[$sev][$i];
1 голос
/ 30 апреля 2010

У вас есть ошибка в цикле for:

for ($i = 1; $i <= 6; $i++) {
    foreach ($severity as $sev) {
        $totals[$i] += $counts[$sev][$i];
    }
}

Вы забыли инициализировать переменную $i.

0 голосов
/ 01 мая 2010

range очень полезно в этих сценариях

foreach( range(1,6) as $i ){
    foreach( $severity as $sev ){
        $totals[$i] += $counts[$sev][$i];
    }
}
...