gpt4 book ai didi

php - PHP 是否有等同于 ||= 运算符的东西?

转载 作者:可可西里 更新时间:2023-11-01 12:40:28 25 4
gpt4 key购买 nike

我只想分配一个尚未分配的变量。执行以下操作的 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() .这也是您需要小心进行自动类型转换的一种情况,这意味着使用 !=/=====/!== 取决于想要的结果。

您也可以为此使用 bool 速记(这就是 Perl ||= 运算符)。从 PHP 5.2.x 开始,没有您所说的运算符。在 Perl 中:

$a ||= $b;

相当于:

$a = $a || $b;

您可以在 PHP 中执行第二种形式,但 PHP 有一些关于 type juggling 的时髦规则.参见 Converting to boolean :

When converting to boolean, the following values are considered FALSE:

  • the boolean FALSE itself
  • the integer 0 (zero)
  • the float 0.0 (zero)
  • the empty string, and the string "0"
  • an array with zero elements
  • an object with zero member variables (PHP 4 only)
  • the special type NULL (including unset variables)
  • SimpleXML 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

你必须注意这些事情。

关于php - PHP 是否有等同于 ||= 运算符的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1149460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com