如果存在值,PHP将其分配给数组

3

我目前正在使用这段代码,仅在变量不带有空引用时将其分配到数组中。是否有任何快捷/替代方法?

if (!is_null($foo)) {
    $var['foo'] = $foo;
}

if (!is_null($bar)) {
    $var['bar'] = $bar;
}

1
它有什么问题吗?代码的作用非常清晰;使用快捷方式/替代方案有什么意义呢? - Sverri M. Olsen
你想让它看起来更短吗?那么你可以使用三元运算符。 - Burning Crystals
@SverriM.Olsen 没有任何问题,我只是期望短的任务逻辑。 :) - Dipendra Gurung
@BurningCrystals 三目运算符仍然期望将某些内容分配给索引/变量,例如在我的情况下,如果$var2为空,则$combinations ['var2']不应存在! - Dipendra Gurung
你需要一次处理一堆变量吗?这就是你想要缩短它的原因,还是这只是一个一般性的问题?无论如何,如果你确实需要使用多个变量,你可以循环遍历变量名并使用可变变量 - Matt Browne
看起来对我来说很短。怎么样一个一行代码呢?-- if (!is_null($foo)) $var['foo'] = $foo; - swatkins
2个回答

3

你可以使用三元运算符作为“快捷方式”:

is_null($foo) ?: $var['foo'] = $foo;

- 但我不会真正推荐这样做。 - 它可以工作,因为$var['foo'] = $foo本身是有效的表达式——但这有点“歪曲”了运算符的整个概念。 - 编辑:正如其他评论中也有人问过的那样,更多的上下文会很有帮助。如果你不是出于纯粹的好奇心而问这个问题,而是因为你必须对多个变量执行此操作,那么将它们全部放入数组中,然后使用array_filter在此之后“丢弃”null值可能更加直接...

0
$a = 'var';
For ($x = 1; $x < 3; $x++){
  if (!is_null(${$a.$i})) {
    $combinations[$a.$i] = ${$a.$i};
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接