我只想分配一个尚未分配的变量.执行以下操作的
PHP方式是什么?
$result = null; $result ||= check1(); $result ||= check2(); $result ||= "default";
我检查了standard operators和is_null功能,但似乎没有一种简单的方法来执行上述操作.
isset()
是通常的做法:
if (!isset($blah)) { $blah = 'foo'; }
注意:您可以为变量赋值null,它将被分配.这将产生与isset()和is_null()
不同的结果,因此您需要明确“未分配”的含义.请参阅Null vs. isset().这也是需要注意自动类型转换的一种情况,这意味着使用!= / ==或=== /!==取决于所需的结果.
你也可以使用布尔速记(这就是Perl || =运算符).从PHP 5.2.x开始,没有像你这样的操作符.在Perl中:
$a ||= $b;
相当于:
$a = $a || $b;
您可以在PHP中执行第二种形式,但PHP有一些关于type juggling的时髦规则.请参阅Converting to boolean:
When converting to 07005,the
following values are considered FALSE:
- the 07005
FALSE
itself- the 07007 0 (zero)
- the 07008 0.0 (zero)
- the empty 07009,and the 07009 “0”
- an 070011 with zero elements
- an 070012 with zero member variables (PHP 4 only)
- the special type 070013 (including unset variables)
- 070014 objects created from empty tags
Every other value is considered TRUE (including any resource).
之后:
$a = 0; $a = $a || 5;
$a等于5.同样:
$a = 0; $b = ''; $c = $a == $b; // true $d = $a === $b; // false
你必须注意这些事情.