我有两个基于条件运行的功能。 代码就像
$contact=($this->function() or $this->function1())
public function()
{
some codes
return contact;
}
public function1()
{
some codes
return contact;
}
它在$ contact中返回bool true或false。我想要返回值。该怎么办?
如果我这样付出
$contact=$this->function() or $this->function1()
如果function()为false,则不检查function1()。
答案 0 :(得分:1)
因为你使用布尔运算符或
的结果$this->function() or $this->function1()
是布尔值。 在PHP 5.3中,您可以使用这样的三元运算符
$contact=$this->function() ?: $this->function1();
如果早期版本
if (!($contact=$this->function() )) $contact=$this->function1();
但是,一般来说,我认为你必须检查你的功能并改变它们的流程。必须,从这两个中做出一个并在此函数中做出决定。
答案 1 :(得分:1)
您无法返回值并使用OR
运算符
一种方法是设置一个变量并在函数中对它进行评估,如下所示:
$ret = "";
function ()
{
$this->ret = "foo";
return contact;
}
function1() {
$this->ret = "Bar";
return contact;
}
$a = function() or function1();
unset($a);
$newRet = $ret;
有关详细信息,请参见此处:
http://php.net/manual/en/language.operators.logical.php
答案 2 :(得分:0)
如果你想检查这两个函数而不是测试它们并将它们的结果保存在单独的变量中,那么在if比较中使用这两个变量
答案 3 :(得分:0)
应该是
$contact = $this->A() or $contact = $this->B();
或者
$contact = $this->A() ?: $this->B();