我不确定天气我正确地说这个,但我认为下面的代码将是非常自我解释:
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)){ ... }
无济于事。
答案 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)
或者您正确设置了括号:
($test = a(false)) || ($test = a(true))