是否存在从另一个变量中选择true变量的语法



让我进一步解释一下,所以我倾向于做这样的事情:

$foo = "";
$bar = "This is not empty"
if($foo){
  $str = $foo;
}else{
  $str = $bar;
}
magic($str)

我认为这是一种非常糟糕的方法,必须有一些简单的语法来实现这一点,我只是很愚蠢。

所以我尝试了:

magic($foo OR $bar)

不幸的是,它实际上比较了这两个变量,并返回1,而不是实际的真变量本身。

基本上,我想要一个语法来检查第一个变量是否为空,然后返回第二个变量。

是的,在PHP 5.3或更高版本中,使用新版本的三元运算符:

$str = $foo ?: $bar;

如果您需要支持PHP5.2或更早版本,则必须使用稍微详细一点的

$str = $foo ? $foo : $bar;

请参阅http://php.net/manual/en/language.operators.comparison.php

请注意,无论是这些还是您的if($foo){ $str = $foo; } else{ $str = $bar; }都不检查$bar的值,您的问题标题与正文不完全匹配。

如果你有多个项目,并且你想删除空的项目,你可以使用array_filter,例如:

array_filter(array($foo, $bar, $baz));

一种方法是使用这样的三元运算符:

$str = $foo ? $foo : $bar;

这是你代码的简写:

if($foo){
  $str = $foo;
}else{
  $str = $bar;
}

更短:

$str = $foo ?: $bar;

$str将等于$foo$bar,以事实为准。

你能做到吗:

magic($foo ?  $foo : $bar);

我喜欢使用三元运算符,比如:

$str = ( $foo ) ? $foo : $bar;

如果不为空,则将$str设置为$foo,如果为空,将$bar设置为。它可能不像您所寻找的那样简单,但在我看来更干净。

最新更新