微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我只想分配一个尚未分配的变量.执行以下操作的 PHP方式是什么?
$result = null;
$result ||= check1();
$result ||= check2();
$result ||= "default";

我检查了standard operatorsis_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

你必须注意这些事情.

原文地址:https://www.jb51.cc/php/136659.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐