让我进一步解释一下,所以我倾向于做类似的事情:
$foo = "";
$bar = "This is not empty"
if($foo){
$str = $foo;
}else{
$str = $bar;
}
magic($str)
我认为这是一个非常讨厌的方法来解决这个问题,并且必须有一些简单的语法来实现这一点而且我只是愚蠢。
所以我试过了:
magic($foo OR $bar)
不幸的是,它实际上比较了两个变量并返回1
而不是实际的真实变量本身。
基本上我想要一种语法来检查第一个变量是否为空,然后它将返回第二个变量。
答案 0 :(得分:5)
是的,在PHP 5.3或更高版本中,使用新版本的三元运算符:
$str = $foo ?: $bar;
如果您需要支持PHP 5.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));
答案 1 :(得分:3)
一种方法是使用这样的三元运算符:
$str = $foo ? $foo : $bar;
它是您的代码的简写:
if($foo){
$str = $foo;
}else{
$str = $bar;
}
更短:
$str = $foo ?: $bar;
$str
将等于$foo
或$bar
,无论哪个都是真实的。
答案 2 :(得分:1)
你能做到这一点:
magic($foo ? $foo : $bar);
答案 3 :(得分:0)
我喜欢使用这样的三元运算符:
$str = ( $foo ) ? $foo : $bar;
如果$str
不为空,则会将$foo
设置为$bar
,如果是{{1}}则为{{1}}。它可能不像你想要的那么简单,但它对我来说看起来更干净。