没有中间表达的三元陈述
如何取代这一点:
if( $this->getInfo() ){
$value = $this->getInfo();
}else{
$value = $this->getAnotherInfo();
}
这将是更好的解决方案:
$value = $this->getInfo() ? $this->getInfo() : $this->getAnotherInfo();
但是我们重复$this->getInfo()
。
这是乐趣:
$value = $this->getInfo() ? : $this->getAnotherInfo();
如果它困扰你不得不重复表达式,你可以编写一个返回第一个真值的函数。
$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;
}
一个讨厌的选择是这样的:
if (!($value = $this->getInfo())) $value = $this->getOtherInfo();
如果赋值返回false
赋值另一个值。
但除了这看起来令人厌恶的事情之外,它仍然是重复的,尽管以不同的方式。
从PHP 5.3开始,您可以忽略三元运算符的中间部分并避免重复:
$value = $this->getInfo() ? : $this->getOtherInfo();
哪个做你想要的。
链接地址: http://www.djcxy.com/p/57727.html上一篇: Ternary statement without middle expression
下一篇: Is there a shorter syntax for the ternary operator in php?