2016-11-10 11 views
0

ifステートメントを実行する簡略化された方法があるかどうかを確認したいのですが、同じ機能のデータを使用する複数の条件をチェックしています。ifステートメントで変数を定義してチェックする

if($class->function($id) && $class->function($id)['key'] > 0) 
{ 
    //Do something... 
} 

ここで問題となるのは、同じデータを取得する2つのデータベース呼び出しです。私はすべてのif文の中同じ効果を得ることができ、特に

$classVariable = $class->function($id); 
if($classVariable && $classVariable['key'] > 0) 
{ 
    //Do something... 
} 

私の質問される:1つの明白な解決策は、次のようにしているのですか?たとえば(これはうまくいかないでしょう):

if($classVariable = $class->function($id) && $classVariable['key'] > 0 
{ 
    //Do something... 
} 

これは可能ですか?同じステートメントでそれを定義して使用すると、よりクリーンなコードになります。

+2

使用 ' () 'を割り当ててもうまくいきます。 –

+1

あなたはこのようにすることができますが、推奨される方法ではないことに注意してください。 if文の前に変数を宣言する必要があります。しかし、それはあなたのコードだと思うが、あなたはそれを行うことを歓迎している:) – Kenyon

+0

それは動作します。最初に定義してから 'if'文を実行するか、' if'文の中で定義するかの間に好みがあるかどうかは誰にも分かりますか? 編集:Kenyonが私が求めている間に投稿しました。ありがとう! :) –

答えて

1

Nietは$ classVariableの代入の前後にかっこ()を使用しています。コード内で答えを示すために、OP編

(質問は解決させ、私はちょうど答えではなく、コメントとしてこれを投稿したかった、申し訳ありませんNiet)

...

if(($classVariable = $class->function($id)) && $classVariable['key'] > 0) 
{ 
    //Do something... 
} 
+1

かっこが追加されているように見えます。 – pancho018

+0

@ pancho018 - 私はそれを –

+0

に追加しました。もう34人の担当者が、あなたもNietのようにコメントすることができます。良い/良い答えを書くことは、(肯定的な)票を集める、btw。 http://stackoverflow.com/help/how-to-answer –