2011-08-12 4 views
1

私はこれを正しくtermingが、私は次のコードはかなり自己explaintoryになると思うわからない天気だ:if文で変数を返す - 複数の試行が可能ですか?

function a($p){ 
    if($p===true){ 
     return 'yep'; 
    } 
    else{ 
     return false; 
    } 
} 

if($test=a(true)){ 
    echo $test; // this will echo out 'yep' 
} 

期待通りに上記のコードは動作します。私が達成しようとしているのは、次のようなものです:

function a($p){ 
    if($p===true){ 
     return 'yep'; 
    } 
    else{ 
     return false; 
    } 
} 

if($test=a(false)||$test=a(true)){ 
    var_dump($test); // this will show $test being bool(true) NOT yep 
} 

中間機能を実行しないでこれは可能ですか?

私も試してみました:

if($test=(a(false)||a(true)){ ... } 

を無駄に。 ||式の結果が$testに割り当てられますので

$test = (a(false) || $test=a(true)) 

論理演算子は常に、ブール値を返すよう

答えて

4
$test = a(false) || $test = a(true) 

が評価されます。

あなたは上記の式は$testに文字列を代入することを望むなら、あなたはlower precedenceその後、代入演算子(私はこのコンテキストではこの方法を好む)が使用orあります

$test = a(false) or $test = a(true) 

DEMO

それとも、正しく括弧を設定:どのように私ができる

($test = a(false)) || ($test = a(true)) 
+0

がイライラこの答えを別の10分間正しいと投票してください。解決!ありがとう! –

+0

@ anonymous-one:あなたは大歓迎です:) –

関連する問題