2013-03-09 3 views
-3

큰 중첩 된 if 블록 때문에 오류가 발생하여 여기에 PHP 놈을 완료하십시오. 오류는 코드를 변경함에 따라 다양하지만 항상 if 문과 관련이 있습니다. 이 진술을하는 올바른 방법은 무엇입니까? 위치는 위의 강조에블록이 올바른 경우 PHP 형식

if(!empty($_GET['x2'])) and (!empty($_GET['x'])) and (!empty($_GET['num'])) 
    { 
    $xsqrd = $_GET['x2']; 
    $x = $_GET['x']; 
    $num = $_GET['num']; 
    if(($xsqrd*2)==0.0) 
    { 
    print $errdivzero; 
    } 
    else if(sqrt(pow($x,2)-(4*$xsqrd*$num))) 
    { 
    print $errsqrtmin1; 
    } 
    else 
    { 
    $ans1 = (-$x)+(sqrt(pow($x,2)-(4*$xsqrd*$num)))/(2*$xsqrd); 
    $ans2 = (-$x)-(sqrt(pow($x,2)-(4*$xsqrd*$num)))/(2*$xsqrd); 
    } 
    } 
+0

[PHP 논리 AND 연산자 오류] (http://stackoverflow.com/questions/15309456/php-logical-and-operator-error)에서 1 분 전에 대답하지 않았습니까? – deceze

+0

그게 내 질문이야. 그게 문이 아니라 블록에 관한거야 –

+0

'{...}'안에있는 물건에 관한이 질문이 있니? – Barmar

답변

3
if(!empty($_GET['x2']) && !empty($_GET['x']) && !empty($_GET['num'])) 
    { 
     $xsqrd = $_GET['x2']; 
     $x = $_GET['x']; 
     $num = $_GET['num']; 
     if(($xsqrd*2)==0.0) 
     { 
      print $errdivzero; 
     } 
     else if(sqrt(pow($x,2)-(4*$xsqrd*$num))) 
     { 
      print $errsqrtmin1; 
     } 
     else 
     { 
      $ans1 = (-$x)+(sqrt(pow($x,2)-(4*$xsqrd*$num)))/(2*$xsqrd); 
      $ans2 = (-$x)-(sqrt(pow($x,2)-(4*$xsqrd*$num)))/(2*$xsqrd); 
     } 
    } 

and을 교체하고 또한 PHP는 함수가 아닙니다 and을 선언했다. and&&으로 대체해야합니다.

오류 메시지없이 잘 작동합니다. 잘

+0

Sidenote :'And'는 유효합니다; '&&'보다 우선 순위가 낮지 만, 여기에서는 완벽하게 괜찮습니다. –

1
if(!empty($_GET['x2']) && (!empty($_GET['x']) && (!empty($_GET['num'])) 
//    ^extra bracket  ^extra bracket 
{ 
    $xsqrd = $_GET['x2']; 
    $x = $_GET['x']; 
    $num = $_GET['num']; 
    if(($xsqrd*2)==0.0) 
    { 
     print $errdivzero; 
    } 
    else if(sqrt(pow($x,2)-(4*$xsqrd*$num))) 
    { 
     print $errsqrtmin1; 
    } 
    else 
    { 
     $ans1 = (-$x)+(sqrt(pow($x,2)-(4*$xsqrd*$num)))/(2*$xsqrd); 
     $ans2 = (-$x)-(sqrt(pow($x,2)-(4*$xsqrd*$num)))/(2*$xsqrd); 
    } 
} 

당신은 추가 닫는 괄호을했다 :

다음은 잘못된 if 블록입니다. 또한 당신은 여분의 (if의 조건이 &&

+0

이제 오류가 발생합니다 : 예기치 않은 '{'on line 32 – imulsion

0

의이 괄호 확인하자 :

if(!empty($_GET['x2'])) and (!empty($_GET['x'])) and (!empty($_GET['num'])) 
^    ^ 

이 두 번째 브라켓이 if 문을 닫습니다 강조 -이 당신과 같이 불필요한 브래킷을 제거해야합니다 ::

if(!empty($_GET['x2']) and !empty($_GET['x']) and !empty($_GET['num'])) 

에서 오류가 발생합니다을 장래에 각 개폐 브래킷에 대해 닫는 브래킷이 예상되는 위치에 있는지 확인하고 브래킷 수와 함께 외출하지 마십시오.

+1

여는 괄호를 추가하면 안되며, 여는 닫는 괄호를 제거해야합니다. – Barmar

+0

닫는 괄호가 없습니다. – Crisp

+0

실제로 답변을 업데이트했습니다. –

관련 문제