我正在尝试打印1到50之间的数字。对于3的倍数,它应该打印“ 3的倍数”。对于5的倍数,应打印“ 5的倍数”。对于3和5的倍数,应该为其他数字打印“ 3和5的倍数”,应该打印该数字。
我使用switch尝试了以下代码,它正在工作。但我不能使用switch,三元运算符或else语句。
下面是我的代码-
function findMultiples($n)
{
$three = 3; // To keep track of multiples of 3
$five = 5; // To keep track of multiples of 5
for ($i = 1; $i <= $n; $i++)
{
switch ($i) {
case $i%$three==0 and $i%$five==0:
echo "multiple of 3 and 5 both";
break;
case $i%$three==0:
echo "multiple of 3";
break;
case $i%$five==0:
echo "multiple of 5";
break;
default:
echo $i;
}
echo "<br/>";
}
}
// Driver Code
findMultiples(50); //I am getting expected result.
如果在开关所在的位置有条件,我如何通过使用以下方法获得此结果
$printNumbers = "";
if (($i%$three==0 and $i%$five==0) or ($i%$three==0) or ($i%$five==0))
{
$printNumbers = $i;
}
echo $printNumbers;
一个有点奇怪的问题,但是如果您只需要一个IF
,则可以同时使用比较和赋值以实现它:
<?php
function findMultiples($n) {
$three = 3; // To keep track of multiples of 3
$five = 5; // To keep track of multiples of 5
for ($i = 1; $i <= $n; $i++) {
if (($i % $three == 0 and $i % $five == 0 and $text = 'both 3 and 5') or ($i % $three == 0 and $text = '3') or ($i % $five == 0 and $text = '5') or ($text = 'none')) {
echo $i.' is divided by '.$text;
}
echo '<br>';
}
}
findMultiples(50);
输出:
1 is divided by none
2 is divided by none
3 is divided by 3
4 is divided by none
5 is divided by 5
6 is divided by 3
7 is divided by none
8 is divided by none
9 is divided by 3
10 is divided by 5
11 is divided by none
12 is divided by 3
13 is divided by none
14 is divided by none
15 is divided by both 3 and 5
16 is divided by none
17 is divided by none
18 is divided by 3
19 is divided by none
20 is divided by 5
21 is divided by 3
22 is divided by none
23 is divided by none
24 is divided by 3
25 is divided by 5
26 is divided by none
27 is divided by 3
28 is divided by none
29 is divided by none
30 is divided by both 3 and 5
31 is divided by none
32 is divided by none
33 is divided by 3
34 is divided by none
35 is divided by 5
36 is divided by 3
37 is divided by none
38 is divided by none
39 is divided by 3
40 is divided by 5
41 is divided by none
42 is divided by 3
43 is divided by none
44 is divided by none
45 is divided by both 3 and 5
46 is divided by none
47 is divided by none
48 is divided by 3
49 is divided by none
50 is divided by 5
如果需要,可以随意更改打印的文本。
我认为这不是最佳解决方案,但是也可以使用三元运算符来解决此问题,如果结果的值不为零,则触发if条件,请看一下:
function findMultiples($n)
{
$three = 3;
$five = 5;
for ($i = 1; $i <= $n; $i++)
{
echo $i;
$result = $i%3 == 0 && $i%5==0 ? "multiple of 3 and 5 both" : ($i%3 == 0 ? "multiple of 3" : ($i%5 == 0 ? "multiple of 5" : 0));
if($result)
echo " is multiple of ".$result;
echo "<br/>";
}
}
findMultiples(50);
输出:
1
2
3 is multiple of multiple of 3
4
5 is multiple of multiple of 5
6 is multiple of multiple of 3
7
8
9 is multiple of multiple of 3
10 is multiple of multiple of 5
11
12 is multiple of multiple of 3
13
14
15 is multiple of multiple of 3 and 5 both
16
17
18 is multiple of multiple of 3
19
20 is multiple of multiple of 5
21 is multiple of multiple of 3
22
23
24 is multiple of multiple of 3
25 is multiple of multiple of 5
26
27 is multiple of multiple of 3
28
29
30 is multiple of multiple of 3 and 5 both
31
32
33 is multiple of multiple of 3
34
35 is multiple of multiple of 5
36 is multiple of multiple of 3
37
38
39 is multiple of multiple of 3
40 is multiple of multiple of 5
41
42 is multiple of multiple of 3
43
44
45 is multiple of multiple of 3 and 5 both
46
47
48 is multiple of multiple of 3
49
50 is multiple of multiple of 5