PHP中的连续if条件

时间:2014-05-12 12:57:04

标签: php

如果PHP中有两个连续的条件,它们是否都会被评估,或者如果第一个条件已经失败,那么if-case评估是否被取消(因此第二个条件的结果不重要)?

if (condition1 && condition2) { }

4 个答案:

答案 0 :(得分:11)

PHP使用Short Circuit Evaluation,因此如果第一个条件为假,则第二个条件甚至不会被评估。

答案 1 :(得分:3)

由于您使用&&,如果左侧条件失败,则不会评估正确的

if (statement1 && statement2)
{
    //If the left part is false, the right part is not even checked
}


if (statement1 || statement2)
{
    //if the left part is false, the right part is checked
}

答案 2 :(得分:2)

如果第一个条件的结果使得评估第二个条件变得不必要,那么PHP就不会对它进行评估(第二个条件)。这称为Short-circuit evaluation,这个术语在PHP's documentation on logical operators中也有意义。

这是一个证明它的小例子:

<?php

function foo() {
    echo 'Bar';
    return true;
}

if (false && foo()) { }

由于PHP使用短路评估,foo()将不会被执行,因此屏幕上不会打印Bar

因为&#39;测试&#39;永远不会echo,您可以得出结论,如果第一个条件返回false,则永远不会评估第二个条件。

同样适用于||(OR)运算符,但反过来说:

<?php

function foo() {
    echo 'Bar';
    return true;
}

if (true || foo()) { }

由于第一个条件已经是true,因此无需评估第二个条件。同样,foo()未执行,因此您将获得一个空屏幕。

答案 3 :(得分:1)

它是一个AND。而且PHP很懒惰。如果第一个函数返回false,则不会触及其他函数。与OR相同。如果你使用它,PHP是懒惰的,只在必要时进行评估。

if(condition1() || condition2())

如果condition1()返回true,则条件2将不受影响。很高兴知道性能,总是首先评估快速功能。^^