【发布时间】:2021-02-09 09:22:18
【问题描述】:
这就是我想要做的:
- 输出1到100之间的数字
• 如果数字可以被三 (3) 整除,则输出单词“foo”
• 如果数字可以被五 (5) 整除,则输出单词“bar”
• 如果数字可以被三 (3) 和 (5) 整除,则输出单词 “美食吧”
我能够做到这一点,但它打印了两次 foobar,如下面的输出所示,而不是一次。我做错了什么?
这是我当前的代码:
<?php
for ($i = 1; $i<=100; $i++) {
if ($i % 3 && $i % 5) {
echo $i;
} else {
if ($i % 3 == 0) {
echo "foo";
}
if ($i % 5 == 0) {
echo "bar";
}
if ($i % 3 == 0 && $i % 5 == 0) {
echo "foobar\r\n";
}
}
//line breaks to enhance output readability
echo "\r\n";
}
?>
电流输出:
1
2
foo
4
bar
foo
7
8
foo
bar
11
foo
13
14
foobarfoobar
16
17
foo
19
bar
foo
22
23
foo
bar
26
foo
28
29
foobarfoobar
31
32
foo
34
bar
foo
37
38
foo
bar
41
foo
43
44
foobarfoobar
46
47
foo
49
bar
foo
52
53
foo
bar
56
foo
58
59
foobarfoobar
61
62
foo
64
bar
foo
67
68
foo
bar
71
foo
73
74
foobarfoobar
76
77
foo
79
bar
foo
82
83
foo
bar
86
foo
88
89
foobarfoobar
91
92
foo
94
bar
foo
97
98
foo
bar
正如我在回答中发布的那样:
if ($i % 3 && $i % 5) {
echo $i;
} else {
else if ($i % 3 == 0) {
echo "foo";
}
else if ($i % 5 == 0) {
echo "bar";
}
else if ($i % 3 == 0 && $i % 5 == 0) {
echo "foobar\r\n";
}
}
这是对的吗?我无法在评论中正确发布所有这些代码。
【问题讨论】:
-
某人recently asked a similar question,基本就是这样解决FizzBuzz问题的。您尝试实现它的方式可以工作,但您可能应该重新排列
ifs 的顺序(以便它首先检查foobar),如果您不想尝试,请改用elseif我对上述问题的回答中的方法(我更喜欢使用数组和implode()的解决方案)。
标签: php for-loop if-statement