在if语句中返回变量 - 可能多次尝试?

时间:2011-08-12 17:41:47

标签: php variables if-statement return

我不确定天气我正确地说这个,但我认为下面的代码将是非常自我解释:

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)){ ... }

无济于事。

1 个答案:

答案 0 :(得分: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))