我有三个像这样的值:
$a = null
$b = 3;
$c = null
Run Code Online (Sandbox Code Playgroud)
(我永远不知道会是什么null:也许所有人,也许都不是.)
在所谓的延迟加载之后,我试图以这种方式分配第一个非null值:
$d = $a or $b or $c;
Run Code Online (Sandbox Code Playgroud)
(它类似于JavaScript方式var d = a || b;(如果没有,它将分配b).)
但在PHP中它似乎不起作用.
我做错了,或者最简单的方法是什么?
elc*_*nrs 39
您可以在PHP 5.3+中使用短三元运算符:
$d = $a ?: $b ?: $c;
Run Code Online (Sandbox Code Playgroud)
请注意,这确实类似于JS中的强制类型.
更新(PHP 7)
在PHP 7.0+中你会做(称为null coalescing- 更多信息):
$d = $a ?? $b ?? $c;
Run Code Online (Sandbox Code Playgroud)
在 PHP 7 中,您可以使用“空合并”运算符:
$d = $a ?? $b ?? $c;
Run Code Online (Sandbox Code Playgroud)
正如问题所问,这将分配第一个非空值(如果没有,则为空)。
与其他一些答案不同,它不会被隐式类型转换所困扰,例如,
$b = 0; $c = 1;
$d = $a ?? $b ?? $c;
echo $d;
Run Code Online (Sandbox Code Playgroud)
将输出 0:它不会介意 $a 根本没有被设置,并且不会传递 $b 即使它类型转换为false.
| 归档时间: |
|
| 查看次数: |
8069 次 |
| 最近记录: |