2010-04-30 4 views
3

PHP 배열 논리 재 요인

내가 내 코드를 팩터 다시하려고 해요 ...이 PHP 배열 논리 재 요인

나는 다음과 같은 한 ... 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]; 
    } 
} 

답변

1

당신은 루프의 버그가 있습니다

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

당신은 $i 변수를 초기화하는 것을 잊었다. 이 시나리오에서 매우 유용합니다

+0

예, $ i var을 초기화하는 것을 잊어 버렸습니다 ... 이로 인해 원치 않는 결과가 발생했습니다. 이 중 하나가 또 다른 foreach 루프 안에 있습니다. 나는 또한 + =를 반영하도록 코드를 조정했다 ... 나는 잠시 동안 PHP를 사용하지 않았고 sytax가 허용되었는지 확실하지 않았다. (저는 파이썬 해커입니다.) 감사! –

1

지수는 1 ~ 6 (포함)에 실행, 그래서 BTW

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

, 당신은

$totals[$i] += $counts[$sev][$i]; 
+0

답변 해 주셔서 감사합니다. 당신은 정확한 자리에 있었고 귀하의 의견은 도움이되었지만, 나는 'Alix Axel'대답을 먼저 읽었습니다. –

0

range를 사용할 수처럼 for 루프는해야

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

'foreach'는 더 빠르고 더 예쁘다. 그러나'range'는 특히 더 큰 범위에서 더 많은 메모리를 사용한다. –

+0

@Alix, 'range (1,6)'이 크지 않습니다. 그것을 지나치게 최적화 할 필요가 없습니다. –