如何优化if else if语句,其中前一个ifs不在循环中使用?

rot*_*rcz 5 php

这是假设的代码,假设我有以下内容:

假设我有一个数组,它在这个示例问题中有很多数据,整数,但是它可以在if语句方面以某种方式对任何类型的数据进行排序.

$a = array(0,0,0,1,1,1,1,1,1,2,2,2,2,3,3,...,9,9,9);
Run Code Online (Sandbox Code Playgroud)

假设我有一个带有许多if else if语句的for循环,那些可以有任何做某事的标准.

for($i=0; i<count($a); i++) {
    // these if statements can be anything and may or may not be related with $a
    if($a[$i] == 0 && $i < 10) { 
        // do something
    }
    else if($a[$i] == 1 && $i < 20) {
        // do something
    }
    else if($a[$i] == 2) {
        // do something
    }
    else if($a[$i] == 3) {
        // do something
    }

    // and so on
}
Run Code Online (Sandbox Code Playgroud)

现在问题是,在第一次if语句迭代完成之后,它从未被使用过.一旦for循环开始使用下一个if语句,就不需要再次评估前面的if语句.它可以使用第一个if语句n次,依此类推.

有没有办法优化它,所以它不必通过所有以前的if else if语句,因为它循环数据?记住,数据可以是任何东西,if语句可以是各种条件.

是否有一种范式转换,我没有看到,这是如何编码以提供最佳性能所必需的?

km6*_*zla 0

将 for 语句分解为多个 for 语句。对于您的示例代码:

for($i=0; i<10; i++) {
    if($a[$i] == 0) {
        //do something
    }
}

for($i=0; i<20; i++) {
    if($a[$i] == 1) {
        //do something
    }
}

for($i=0; $i<count($a); $i++) {
    if($a[$i] == 2) {
        // do something
    }
    else if($a[$i] == 3) {
        // do something
    }
}

//etc...
Run Code Online (Sandbox Code Playgroud)