-3

if大きなネストされたブロックが原因でエラーが返されて、ここで PHP noob を完了します。コードを変更するとエラーは異なりますが、常にifステートメントに関係しています。このステートメントを行う正しい方法は何ですか?

間違ったifブロックは次のとおりです。

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);
    }
    }
4

3 に答える 3

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);
        }
    }

余分な(条件があり、php関数ではないifことを宣言しました。andに置き換える必要がありandます&&

現在、エラーメッセージなしで正常に動作しています。

于 2013-03-09T10:20:53.917 に答える
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);
    }
 }

上で強調表示された位置に余分な閉じ括弧がありました。またand&&

于 2013-03-09T10:20:39.447 に答える
0

さて、あなたのブラケットをチェックしましょう:

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

2 番目に強調表示された括弧はステートメントを閉じますif- これはエラーを引き起こします。次のように不要な括弧を削除する必要があります::

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

将来的には、開き括弧ごとに、閉じ括弧が期待する場所にあることを注意深く確認し、括弧の数が多すぎないようにする必要があります。

于 2013-03-09T10:21:02.213 に答える