让我进一步解释一下,所以我倾向于做这样的事情:
$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
设置为。它可能不像您所寻找的那样简单,但在我看来更干净。