2014-07-27 2 views
0

발생 이유 :이 이상한 무한 루프가 다음 코드 왜 사람이 알고 있나요

foreach ($_POST as $new => $new_val) { 
    foreach ($info as $old => $old_val) { 
     if ($new == $old || $new_val !== $old_val) { 
      $change_log[$old] = array("old" => $old_val, "new" => $new_val,); 
      var_dump($change_log); 
     } 
    } 
} 

가 (무한 루프 것 같은) 운영 체제 달려 있습니다.
그러나 "if"조건에서 연산자 || 이 같은 & &로 변경됩니다 :

if ($new == $old && $new_val !== $old_val) 

모두 확인 간다.
||에 무슨 문제가 있습니까? 이 코드에서?

+1

'$ _POST' 및'$ info'의 예를 게시 할 수 있습니까? – SpencerX

+0

그것은 무한하지만, 아마도 정말로 길지는 않습니다. '$ _POST'와'$ info'에 얼마나 많은 항목이 있습니까? –

+0

또한 $ change_log의 var_dump를 게시 할 수 있습니까? 프로그램이 실행 중일 때 CPU 사용 방법을 확인하십시오. 소식에 – mouhammed

답변

0

오랜 시간이 걸리는 var_dump($change_log);입니다. 모든 값이 변경되면 해당 행은 50 * 50 회 실행되고 매번 (모든 불일치에 대해) $change_log의 길이가 증가합니다.

그래서 최악의 경우, 그것은

2500은 외부 루프의 후이 라인 var_dump($change_log);을 넣고 어떻게 볼 수 있습니다 $change_log 길이를 인쇄하는 2500 번이된다.

+0

당신은 답을 써서 연산자가 아무런 의미가 없다고 말할 수 있습니다 - if 절은 거의 모든 입력에 대해 true입니다. –

+0

@SamKorhonen : 귀하의 의견이 이미 그 :-) – Fallen

관련 문제