2011-08-12 34 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)){ ... } 

無濟於事。

回答

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

將被評估爲

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

邏輯運算符總是返回一個布爾值,所以||表達式的結果將被分配到$test

如果你想,上面的表述字符串分配給$test,那麼你必須使用or具有lower precedence然後賦值運算符(我寧願在這種情況下這種方式):

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

DEMO

或者你正確設置括號:

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

折騰我怎麼能t投票答覆正確的另一個10分鐘。解決了!謝謝!!! –

+0

@ anonymous-one:不客氣:) –