For循环if语句问题

时间:2011-08-21 14:17:47

标签: php

我有一个for循环,在其中我有一个这样的if语句:

  $output = "";
  $limit = 550;
  for ($i = 1; $i <= $limit; $i++) {
    if($i < 10){
     $output .= my_function($i*1);
    }elseif($i < 20){
     $output .= my_function($i*2);
    }elseif($i < 30){
     $output .= my_function($i*3);
    }
    //elseif 30 => 550
  }

问题是我发现将此elseif语句继续到550非常繁琐。如果不编写55 elseif个语句,有没有办法做到这一点。

8 个答案:

答案 0 :(得分:9)

你的想法是完全正确的。必须重复那么多代码才能确定某些东西已经关闭。

在这种情况下,解决方案非常简单。你只想用整数除法来敲掉你不关心的那个数字。你需要调整一个,因为你检查的是小于或不小于或等于。

$output = "";
$limit = 550;
for ($i = 1; $i <= $limit; $i++) {
     $temp = (int) ($i / 10) + 1;
     $output = my_function($i*$temp);
}

答案 1 :(得分:0)

for ($i = 1;$i <= 550;$i++) {
  $multiplier = (int) ($i / 10) + 1;
  $output = my_function($i * $multiplier); 
}

答案 2 :(得分:0)

我的第一个想法是你可以使用:

  $output = "";
  $c = 0;
  $limit = 550;
  for ($i = 1; $i <= $limit; $i++) {
    if (($i + 1) % 10 == 0) {
        $c++;
        $output = my_function($i*$c);
    }
  }

答案 3 :(得分:0)

怎么样

$output = "";   
$limit = 550;   

for ($i = 1; $i <= $limit; $i++) {     
    $num = ($i / 10) + 1      
    $output = my_function($i*$num);
} 

答案 4 :(得分:0)

试试这个:

$output = "";
$limit = 550;
for ($i = 1; $i <= $limit; $i++)
{
    $output = my_function($i * (1 + (int)($i / 10)));
}

答案 5 :(得分:0)

解决方案应该如下所示:

$output = "";
$limit = 550;
for ($i = 1; $i <= $limit; $i++)
{
    $num = ceil($i/10);
    $output = my_function($num, $num-1);
}

嗯,自从我开始输入此代码后,原始代码似乎已经发生了变化。 my_function函数现在只有1个输入,最初有2个。

答案 6 :(得分:0)

for ($i = 1; $i <= $limit; $i++) {
     $output = my_function(i*floor($i/10+1));
}

关键不是这个问题:
你在每次循环迭代时重新分配输出,但只有最后一次循环后可以使用?需要你$output[]=$output.=

答案 7 :(得分:-1)

您可以使用循环而不是if \ else

$j = 1;
while( ($i < $j*10) && ($j <= 55) )
  $j++;

$output = my_function($j, $j-1);