这是假设的代码,假设我有以下内容:
假设我有一个数组,它有很多数据,在这个示例问题中是整数,但它可以是任何类型的数据,这些数据已经以某种方式就 if 语句进行了排序。
$a = array(0,0,0,1,1,1,1,1,1,2,2,2,2,3,3,...,9,9,9);
假设我有一个带有许多 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
}
现在的问题是,在第一个 if 语句迭代完成后,它从未使用过。一旦 for 循环开始使用下一个 if 语句,就不需要再次评估前一个 if 语句。它可以使用第一个 if 语句 n 次等等。
有没有办法对其进行优化,这样它就不必遍历所有前面的 if else if 语句,因为它正在循环数据?请注意,数据可以是任何东西,if 语句可以是各种条件。
是否存在我看不到的范式转变,这对于如何编码以提供最佳性能是必需的?