gpt4 book ai didi

php - 如果设置了变量,则赋值

转载 作者:IT王子 更新时间:2023-10-28 23:51:53 26 4
gpt4 key购买 nike

在 PHP 中,我发现自己经常编写这样的代码:

$a = isset($the->very->long->variable[$index])
? $the->very->long->variable[$index]
: null;

有没有更简单的方法来做到这一点?最好不需要我写两次 $the->very->long->variable[$index]

最佳答案

一个更新,因为 PHP 7 现已发布并且在这一点上改变了游戏规则;之前的答案是关于 PHP 5 的。

PHP 7 解决了这个问题。因为你说的是​​真的,用 PHP 写这个很常见,那绝对不优雅。

在 PHP 7 中出现了 Null Coalesce Operator (RFC) ,这是 isset 三元条件的完美简写。

它的目标是取代这种类型的条件:

$var = isset($dict['optional']) ? $dict['optional'] : 'fallback';

据此:

$var = $dict['optional'] ?? 'fallback';

更好的是,空合并运算符是可链接的:

$x = null;
# $y = null; (undefined)
$z = 'fallback';

# PHP 7
echo $x ?? $y ?? $z #=> "fallback"

# PHP 5
echo isset($x) ? $x : (isset($y) ? $y : $z)

空合并运算符的行为与 isset() 完全相同:在以下情况下采用主题变量的值:

  • 变量已定义(存在)
  • 变量不为空

给 PHP 初学者的注意事项:如果您使用三元条件,但您知道必须定义主题变量(但您想要回退 falsy 值),则有 Elvis operator :

$var = $dict['optional'] ?: 'fallback';

使用 Elvis 运算符,如果 $dict['optional'] 是无效偏移量或 $dict 未定义,您将收到 E_NOTICE 警告(PHP 5 和 7)。这就是为什么在 PHP 5 中,人们使用可怕的 isset a ? a : b 当他们不确定输入时形成。

关于php - 如果设置了变量,则赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13626432/

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