使用for循环而不是if语句?

时间:2013-08-13 12:43:12

标签: php arrays loops if-statement for-loop

我正在尝试用循环来熟悉自己,因为我只了解基础知识。 我正在尝试简化下面的代码

                    $round1 = $max / 2;
                    $round2 = $round1 + ($max / 2 / 2);
                    $round3 = $round2 + ($max / 2 / 2 / 2);
                    $round4 = $round3 + ($max / 2 / 2 / 2 / 2);
                    $round5 ...

有了这个: -

                    $round = array($max/2);

                    for ($i=1;$i<$max;$i++) {
                        $round[] = $round[$i -1] + $max/pow(2, $i + 1);
                    }   

现在为下一个代码: -

                    if($matchno <= $round[0]) {
                        $scores_round1.= '['.$score1.', '.$score2.'],'; 
                    }
                    if($matchno > $round[0] AND $matchno <= $round[1]) {
                        $scores_round2.= '['.$score1.', '.$score2.'],'; 
                    }       
                    if($matchno > $round[1] AND $matchno <= $round[2]) {
                        $scores_round3.= '['.$score1.', '.$score2.'],'; 
                    }
                    if($matchno > $round[2] AND $matchno <= $round[3]) {
                        $scores_round4.= '['.$score1.', '.$score2.'],'; 
                    }

以上是否可以在for循环中使用以避免使用if()?

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

你可以检查round1和其余的:

 for ($i=1;$i<$max;$i++) {
         if($matchno>$round[$i] AND $matchno <= $round[$i+1])
            ${'scores_round'.$i}.='['.$score1.', '.$score2.'],'; 
     }

答案 1 :(得分:0)

for($i=0;$i< count($round); $i++){
    if($match < $round[$i]){
        ${"scores_round".$i}.= '['.$score1.', '.$score2.'],';
        break;
        }
}

答案 2 :(得分:0)

通过观察if语句,我们注意到一些事情: 首先,没有* else if *语句。这意味着必须执行所有if语句检查。 另外,检查$ matchno是否小于$ round [0],没有检查大于if if语句(第一个)。 另一点是$ scores_roundX从X = 1开始而不是0。 显然,如果在循环内部,你将不得不使用一个。 所以,我们将形成循环代码,制作一些小技巧:

for($i = -1; $i < count($round)-1 ; ++$i){
    if(($i = -1 OR $matchno > $round[$i]) AND ($matchno <= $round[$i+1])){
        ${"scores_round".$i+2} .= '['.$score1.', '.$score2.'],';
    }
}
  • 我们将使用-1初始化THE $ i,将其用于第一个语句执行。
  • 我们将把声明用于表示$小于的数量 数组减去1(因为我们在if语句中使用$ i + 1进行索引, 在循环内。)
  • 只有当$ i不是-1时,我们才会执行大于检查 将在第二次检查时发生(如果在初始代码中则为第二次)。在这里,我们也使用 语言的部分评估功能,这意味着在OR子语句中, 如果第一部分是真的,那么第二部分就不会被贬低。
  • 我们将在$ scores_round形成$ i + 2,因为我们从开始 在我们的for循环中为-1。