【发布时间】:2015-01-28 11:57:25
【问题描述】:
过去 3 个小时一直在尝试解决这个问题,但很难找到任何“在 for 循环中嵌套 for 循环”的搜索结果,所以我必须问这个问题,有人可以帮助澄清一下,就像一个业余爱好者这是一个问题,非常感谢任何和所有的帮助。
所以我在下面有这段代码,对于我在http://www.w3resource.com/php-exercises/php-for-loop-exercises.php 找到的初学者循环练习 关于该页面的问题 3。最终结果也应该在该页面上。
<?php
for($a = 1; $a <= 5; $a++) {
for($b = 1; $b <= $a; $b++) {
echo "*";
if($b < $a) {
echo " ";
}
}
echo "<br />";
}
?>
原来是一个由15个小*组成的三角形
我正试图弄清楚这是如何工作的,因为即使网站有答案,我也想了解,这样我就可以自己写东西而不是复制粘贴。
以下是我在阅读php.net 并尝试在 Google 上寻找解决方案后能够做出的结论。
所以,$a for 循环开始为真,所以循环继续到$b FOR 循环,它是真的,所以它会回显*,此时$b 不是< $a循环还没有结束所以++ 还没有被添加,if 语句是假的,所以我们<br /> 并重新运行循环。
第二次。现在$a=2 和for 循环仍然正确,所以它将继续到$b for 循环和回显*。这就是我感到困惑的地方。 $b 在其语句的末尾有 ++ ,所以这是否意味着在循环 1 之后 $b = 2 和 if 仍然是 false ?
在我的脑海里,我一直在想它应该像这样打印出来:
<br />* <br /> * <br />
而不是这个:
<br />* <br /> * * <br />
我的结论。
-
$b值将在每次循环后重置回 1 并不断重复,直到if语句为 false。
或
- 被打印出来的
*被存储起来,并将成为每个循环开始时的自动起点。我知道,如果为for($i=0;$i<11;$i++)循环执行简单的打印将传递该值,但是在我的情况下,打印的*不是一个值,因此不应将其传递到新循环。李>
或
- 我完全不同意我的两个结论。
不管怎样,这让我很困惑。
抱歉,解释太长了。
谢谢。
【问题讨论】:
-
您现在有什么问题?就像这是如何工作的?
-
替换回声“”;用回声“ ”;因为 html 将多个空格视为空格并将它们评估为单个空格
-
这个问题属于codereview
-
嘿 @Rizier123 ,是的,很抱歉让您感到困惑,我发现很难理解这是如何工作的。我已经写下了 2 个结论,说明为什么我认为这行得通,但不确定其中任何一个是否正确。我知道我在询问一个工作代码块很奇怪,但它让我非常烦恼,以至于我不知道它为什么工作=\
标签: php for-loop nested-loops