如何替换它:
if( $this->getInfo() ){
$value = $this->getInfo();
}else{
$value = $this->getAnotherInfo();
}
这将是更好的解决方案:
$value = $this->getInfo() ? $this->getInfo() : $this->getAnotherInfo();
但我们重复$this->getInfo()
。
答案 0 :(得分:1)
这很有趣:
$value = $this->getInfo() ? : $this->getAnotherInfo();
答案 1 :(得分:0)
如果你不得不重复表达式,你可以编写一个返回第一个真值的函数。
$value = which ($this->getInfo(), $this->getAnotherInfo());
function which () {
if (func_num_args()<1) return false;
foreach (func_get_args() as $s) if ($s) return $s;
return false;
}
答案 2 :(得分:0)
讨厌的选项就是这样:
if (!($value = $this->getInfo())) $value = $this->getOtherInfo();
如果作业返回false
,则指定另一个值。
但除了这看起来令人作呕之外,它仍然是重复的,尽管方式不同。
As of PHP 5.3,你可以省略三元运算符的中间部分并避免重复:
$value = $this->getInfo() ? : $this->getOtherInfo();
你想做什么。