我正在尝试用循环来熟悉自己,因为我只了解基础知识。 我正在尝试简化下面的代码
$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()?
感谢您的帮助
答案 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.'],';
}
}