我使用内联条件获取一些值,但我不明白为什么它不会返回好的值。
我想获得false
值,但它返回test
。我做错了什么?我搜索了一些问题,但我没有找到为什么我的脚本不起作用。感谢。
这是剧本,
$val1 = null;
$val2 = false;
$val3 = 0;
$val4 = "test";
$newValue = isset($val1) ? $val1 : isset($val2) ? $val2 : isset($val3) ? $val3 : isset($val4) ? $val4 : -1;
var_dump($newValue); // print test
答案 0 :(得分:2)
您必须使用大括号()
包围您的测试:
$newValue = isset($val1) ? $val1 : (
isset($val2) ? $val2 : (
isset($val3) ? $val3 : (
isset($val4) ? $val4 :
-1
)
)
) ;
var_dump($newValue) ; // Outputs : bool(false)
自PHP 7.0起,您可以使用??
字符null coalescing operator使用
$newValue = $val1 ?? $val2 ?? $val3 ?? $val4 ?? -1 ;
var_dump($newValue) ; // Outputs : bool(false)
答案 1 :(得分:0)
虽然不是一个复杂的代码,但只想添加:
使用三元运算符时,即使您习惯使用它们,也要避免嵌套或堆叠操作,因为这会导致代码非常混乱和结果不直观。在复杂情况下使用if语句仍然是最好的。(www.sitepoint.com)
if (isset($val1)) {
$newValue = $val1;
}elseif (isset($val2)) {
$newValue = $val2;
}elseif (isset($val3)) {
$newValue = $val3;
}elseif (isset($val4)) {
$newValue = $val4;
}
var_dump($newValue);