我想获得多个2和3的帮助。感谢
for($i = 0; $i <30; $i++)
if($i % 2)
echo 'number is '. $i . ' is multiple of 2 <br/>';
elseif($i %3)
echo 'number is '. $i . 'is multiple of 3 <br/>';
else
echo 'number is '. $i . 'is multiple of some other number <br/>';
答案 0 :(得分:3)
试试这个:
if($i % 2 === 0)
...
elseif($i %3 === 0)
...
基本上,如果模数为0
,那么这意味着数字可以被整除。
但是,您的逻辑的另一个问题是,2
和3
可以将数字整除。您可以通过将这些解析为单独的if
语句来解决此问题:
if($i %2 === 0) {
...
}
if($i %3 === 0) {
...
}
但是那种打破了你的上一次else
,因为你不能再陷入其中了。您可以通过在循环顶部将变量设置为false
来解决此问题。然后,如果触发了任何if
语句,请将变量设置为true
。最后,如果变量仍为false
,则在每次迭代结束时打印“不可分割”消息。
答案 1 :(得分:1)
你想要一个NOT if(i%2)因为如果余数为零则它是一个倍数。
此外,如果你试图找到30的倍数,你只需要循环到15或数字/ 2.
答案 2 :(得分:0)
for($i = 0; $i < 30; $i++)
{
if($i % 2 == 0)
echo 'number is '. $i . ' is multiple of 2 <br/>';
elseif($i % 3 == 0)
echo 'number is '. $i . 'is multiple of 3 <br/>';
else
echo 'number is '. $i . 'is multiple of some other number <br/>';
}
答案 3 :(得分:0)
我会在if条件
之前添加一个条件if($i%2 === 0 && $i%3 === 0) {
echo 'multiple of 2 and 3\n';
}
使用也可能是正确的:
if ($i%6 === 0) {
....
}
以上if条件。
如果使用开关盒块,情况会更好。