我只想分配一个尚未分配的变量.PHP的做法是什么?
$result = null;
$result ||= check1();
$result ||= check2();
$result ||= "default";
Run Code Online (Sandbox Code Playgroud)
cle*_*tus 17
isset()
这是通常的做法:
if (!isset($blah)) {
$blah = 'foo';
}
Run Code Online (Sandbox Code Playgroud)
注意:您可以分配null
给变量并将其分配.这将产生不同的结果isset()
,并is_null()
因此你需要对你所说的"未分配"什么明确的.请参阅Null vs. isset().这也是一种需要注意自动类型转换的情况,这意味着使用!=/==
或===/!==
取决于所需的结果.
您也可以使用布尔速记(这是Perl ||=
运算符).从PHP 5.2.x开始,没有像你这样的运营商.在Perl中:
$a ||= $b;
Run Code Online (Sandbox Code Playgroud)
相当于:
$a = $a || $b;
Run Code Online (Sandbox Code Playgroud)
您可以在PHP中执行第二种形式,但PHP有关于类型杂耍的一些时髦规则.请参阅转换为布尔值:
转换为布尔值时,以下值被视为FALSE:
- 在布尔
FALSE
本身- 的整数 0(零)
- 所述浮子 0.0(零)
- 空字符串,字符串 "0"
- 一个零元素的数组
- 一个零成员变量的对象(仅限PHP 4)
- 特殊类型
NULL
(包括未设置的变量)- 从空标签创建的SimpleXML对象
每个其他值都被视为TRUE(包括任何资源).
之后:
$a = 0;
$a = $a || 5;
Run Code Online (Sandbox Code Playgroud)
$ a等于5.同样:
$a = 0;
$b = '';
$c = $a == $b; // true
$d = $a === $b; // false
Run Code Online (Sandbox Code Playgroud)
你必须注意这些事情.
归档时间: |
|
查看次数: |
554 次 |
最近记录: |