PHP中的IF条件顺序真的很重要

时间:2016-03-20 13:29:51

标签: php

我正在尝试在PHP基础上变得更好,我在php 7.0.4上运行了这个简单的测试:

<?php

     function am_I_executed(){
        echo "yes I am executed\n";
        return true;
     }

    echo "test1: \n";
    if (false && am_I_executed()) {
         echo "this should never be displayed \n";
    }

    echo "test2: \n";
    if (am_I_executed() && false) {
        echo "this should never be displayed \n";
     }

结果是:

test1
test2
yes I am executed

在尝试这个之前我认为编译器会跳过这个 if 语句,因为它应该总是给出false,无论am_I_executed()的返回是什么并且没有test1和test2之间的区别

我显然是错的。

我相信在现实生活中,它可能会发生这样的情况:

if(algorithm1() && algorithm2()){}

但在某些情况下,可能很难理解哪个是较轻的算法,然后决定它们应该在if语句中列出的顺序。

你如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我认为您应该测试并计算两个算法之间的多个执行时间,并对其执行时间进行统计分析,以确定哪个更轻。

另一种更快捷的方法是读取这两个函数的代码并计算它们的复杂性。

最轻的复杂性(或最短的统计时间)是第一位的。