ada*_*ort 0 php logical-operators
此代码有效:
$foo = getFoo();
if (!$foo) $foo = getBar();
if (!$foo) $foo = getJiggy();
if (!$foo) $foo = getWithIt();
Run Code Online (Sandbox Code Playgroud)
我以为我用逻辑运算符看到了它的简化:
$foo = (getFoo() || getBar() || getJiggy() || ...);
Run Code Online (Sandbox Code Playgroud)
我想,第一个真正的语句会获得通过,但相反,它只是设置$ FOO为boolean true,而不是返回值getFoo(),getBar()等等.
有没有像我想的那样简化?
对于JavaScript,foo = bar || baz;是一种常用的表达式,因为||运算符具有合并行为.
对于||运算符,PHP没有这种行为,它返回一个布尔值.因此,您最初发布的代码越详细:
$foo = getFoo();
if (!$foo) $foo = getBar();
if (!$foo) $foo = getJiggy();
if (!$foo) $foo = getWithIt();
Run Code Online (Sandbox Code Playgroud)
是您最可读,最好的选择.
PHP 5.3有一个三元运算符的简写版本,它作为一个合并运算符:
从PHP 5.3开始,可以省略三元运算符的中间部分.表达式expr1?:expr3如果expr1的计算结果为TRUE则返回expr1,否则返回expr3.
这将允许您使用:
$foo = getFoo() ?: getBar() ?: getJiggy() ?: getWithIt();
Run Code Online (Sandbox Code Playgroud)
但是,假设您不必担心兼容性.
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |