PHP: 是否有一个很好的语法来根据数组元素是否未定义而不使用 if 来初始化数组元素?

PHP: is there a good syntax to initialize an array element depending on whether it is undefined or not, without using if?

PHP

中的双问号语法
$foo = $bar ?? null;
如果 $bar 未定义,

将 return 为 null。这种语法对于简化代码和避免大量 if 语句非常有用。

现在我有以下情况

if (!isset($bar2)) {
    $fooArr = [$bar1];
} else {
    $fooArr = [$bar1, $bar2];
}

似乎很可能存在对语句的一行简化,但我就是想不出来。

我想出的最接近的是下面的,但它会创建一个大小为 2 的数组,其中第二个元素为 null,这不是我想要的。

$fooArr = [$bar1, $bar2 ?? null];

有没有办法在不使用if语句的情况下简化上述嵌套if?

编辑:? : 语法适用于上述情况,但在那种情况下我仍然需要写下 $bar1 两次,这并不比 if 语句更整洁并且可以真正增长当数组由 5 个元素组成时很大。

array_filter() 方法默认仅 returns 来自数组的非空值。

此代码显示了各种结果:

$bar1=1;
$fooArr = [$bar1, $bar2 ?? null];
print_r($fooArr);

$bar2=2;
$fooArr = [$bar1, $bar2 ?? null];
print_r($fooArr);

unset($bar1,$bar2);

$bar1=1;
$fooArr = array_filter([$bar1, $bar2 ?? null]);
print_r($fooArr);

$bar2=2;
$fooArr = array_filter([$bar1, $bar2 ?? null]);
print_r($fooArr);

Teh playground