php if语句执行条件

时间:2015-06-12 07:33:26

标签: php

如果我有一个if语句依赖于返回false的两个方法之一,那么如果第一个方法返回false,两个方法都会运行。例如:

class myClass {
    public function functPublic()
    {
        if(!$this->funct1() || !$this->funct2()){
            print('test');
        }
    }

    private function funct1()
    {
        // complex code here
        return false;
    }

    private function funct2()
    {
        // complex code here
        return false;
    }
}

上述代码是否会执行funct2()方法,即使它已从false方法收到funct1()

4 个答案:

答案 0 :(得分:3)

如果第一个条件被评估为真,则不会调用第二个条件。 测试php之类的简单方法是使用phpfiddle.org 或者自己创建一个php脚本,或者运行命令行。

答案 1 :(得分:1)

PHP使用Gradle User Guide

在所有这些情况下,永远不会调用foo()

$a = (false && foo());
$b = (true  || foo());
$c = (false and foo());
$d = (true  or  foo());

所以用

function funct1() {
    return false;
}

从而

if (!$this->funct1() || !$this->funct2())

if (!false || !$this->funct2())

if (true || !$this->funct2())

表示永远不会调用$this->funct2()

参考:short-circuit evaluation

答案 2 :(得分:0)

没有

如果第一个为真则不需要评估第二个。

如果$ a或$ b为TRUE,则为TRUE。

Read here

答案 3 :(得分:0)

使用OR,执行第一次检查。如果计算结果为true,则不运行第二个。只有当第一个评估为false时才会调用第二个。 如果您需要两者都运行,请使用AND。