PHP是否与|| =运算符等效?

bri*_*gge 7 php

我只想分配一个尚未分配的变量.PHP的做法是什么?

$result = null;
$result ||= check1();
$result ||= check2();
$result ||= "default";
Run Code Online (Sandbox Code Playgroud)

我检查了标准运算符is_null函数,但似乎没有一种简单的方法来执行上述操作.

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:

每个其他值都被视为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)

你必须注意这些事情.


tro*_*skn 5

从php 5.3你可以使用:

$result = $result ?: check1();
Run Code Online (Sandbox Code Playgroud)