PHP 消除简单赋值的“if”[重复]

问题描述 投票:0回答:3

我有这样的代码:

$foo = false;

$ar = ["bar", "baz"];

if ($foo === true)  {
    $ar[] = "corge";
}

 
var_dump($ar);

所以如果 $foo 是

true
$ar
应该是这样的:
["bar", "baz", "corge"]
,否则它应该是这样的:
["bar", "baz"]
.

php 中是否有速记运算符可以让我消除

if

像三元、null coalesce 和 Elvis 这样的解决方案都会在

$foo
为假时创建第三个元素。

php if-statement operators
3个回答
2
投票

要有另一个选择,您可以使用三元运算符。

$foo ? $ar[] = "corge" : null;

如果

$foo
true
corge
将被添加,否则没有任何反应。您可以使用任何其他值代替
null
,因为它没有任何效果。


2
投票

它的意图不太清楚,但肯定可以这样写:

$foo === false or $ar[] = "corge";

现场演示:https://3v4l.org/5XHeb


1
投票

您可以将三元与

array_merge()
一起使用。与空数组合并以避免推送任何东西。

$ar = array_merge($ar, $foo ? ["corge"] : []);
© www.soinside.com 2019 - 2024. All rights reserved.