Isset 内联条件不起作用
Isset inline conditions does not work
我正在使用内联条件来获取一些值,但我不明白为什么它没有 return 好的值。
我想获得 false
值,但它是 return 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
你必须用大括号括起你的测试 ()
:
$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)
虽然不是很复杂的代码只是想补充一下:
在使用三元运算符时,请避免嵌套或堆叠您的操作,即使您习惯使用它们也是如此,因为这会导致非常混乱的代码和不直观的结果。对于复杂的情况,最好还是使用 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);
我正在使用内联条件来获取一些值,但我不明白为什么它没有 return 好的值。
我想获得 false
值,但它是 return 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
你必须用大括号括起你的测试 ()
:
$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)
虽然不是很复杂的代码只是想补充一下:
在使用三元运算符时,请避免嵌套或堆叠您的操作,即使您习惯使用它们也是如此,因为这会导致非常混乱的代码和不直观的结果。对于复杂的情况,最好还是使用 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);