2016-08-18 7 views
-3

私はいくつかの複合条件関数テストを試しています。私は構文エラーに遭遇し続ける&私はそれが可能ではないかもしれないと信じています。誰かがよく知っていますか?コードのスニペットは以下の通りです:この機能テストは可能ですか?

function getPayrollHoursBalance($userId) 
{ 
    if ($userId) 
     { ... preform a query which reports a pay grade ...} 
     return $payGrade; 
     } 
    if ($payGrade = 'A' || $payGrade = 'B') 
      { ... return a multiplier apply to a base salary ... } 
     else 
      { 
      return 'FAIL, no userId!'; 
      } 
     else 
      { return 'FAIL, HOURS NEGATED!'; 
      } 
} 

エラー文から、私は論理OR行われている、if ($payGrade = 'A' || $payGrade = 'B')

は、論理演算をする条件テスト内で行うことができることがポイントでエラーが発生していますテストは、関数が実行することができますか?または、関数が呼び出される前に 'T/F'状態を生成する別の関数を実行する必要がありますか?

if(test)関数内で論理テストを実行することについては、&は何も書かれていません。

私は一種のSQLに傾いていますが、クエリ&内のJOIN &が機能&のうち、条件付きSQLは力仕事をやらせる場合は、複数のテストを取ります。

ありがとうございました。

+0

あなたが提供されているコードは...あまりにも多くの構文の間違いを任意の意味がありません... –

+0

私はあなたの問題(S(の一つ)を推測しています)は、あなたが 'if..else..else'を持っているということです。それは理にかなっていません。おそらく 'if {if..else} else'が必要です。あなたのブレースを正しくインデントしバランスをとることから始めてください。 – deceze

答えて

2

この条件では、いつもtrueが得られます。ここで

if ($payGrade = 'A' || $payGrade = 'B') 

、最初は、変数$ payGradeにAを割り当てます。この割り当ては、成功した場合はtrueを返します。単一の=を使用したため、チェックしません。ダブル=

編集あなたの状態を:

if ($payGrade == 'A' || $payGrade == 'B') 
+1

これは正しいです^、彼が言っていることは '=='は値を比較し、 '='は代入します。関係のないノートでは、OPは 'in_array()' - > 'if(in_array($ payGrade、array( 'A'、B '))){...'と比較した方が良いでしょう。より読みやすい。 – Darren

関連する問題