我有一个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
个语句,有没有办法做到这一点。
答案 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);