我正试图获得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/>';
试试这个:
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
,则在每次迭代结束时打印"不可分割"消息。
您需要一个NOT if(i%2),因为如果余数为零,它是一个倍数。
另外,如果你试图找到30的倍数,你只需要循环到15。或数量/2 .
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/>';
}
我想在if条件之前再添加一个条件
if($i%2 === 0 && $i%3 === 0) {
echo 'multiple of 2 and 3'n';
}
也可以这样写:
if ($i%6 === 0) {
....
}
用于上述if条件。