【问题标题】:How work this for loop code (logic)? PHP [closed]循环代码(逻辑)如何工作? PHP [关闭]
【发布时间】:2018-05-14 10:12:38
【问题描述】:

我不明白这段代码的逻辑。如果 $ i

$n = 5;
for ($i = 1; $i <= $n; $i++) {
  for ($j = 1; $j <= $i; $j++) {
    echo ' * ';
  }
  echo '<br>';
}
for ($i = $n; $i >= 1; $i--) {
  for ($j = 1; $j <= $i; $j++) {
    echo ' * ';
  }
  echo '<br>';
}

【问题讨论】:

  • 你能发布正确的 PHP 代码吗?这看起来很疯狂。
  • 代码已发布,我忘记了,抱歉。再看看
  • 因为 $i 为 1,而第二个循环只有在 $j

标签: php loops for-loop if-statement


【解决方案1】:

逻辑很简单。查看第一个 for 循环。你在 for 循环中有一个 for 循环,所以一旦你的外部 for 循环开始,你的内部 for 循环也将被执行。

例如,

[FIRST ITERATION] - 你的外部 for 循环以 $i = 1 开始,所以你的内部 for 循环会将 $i 的值视为 1 并执行内部循环,因为 $j

[SECOND ITERATION] - 你的外部 for 循环从 $i = 2 开始,所以你的内部 for 循环会将 $i 的值视为 2 并且内部循环执行两次,因为 $j

[第三次迭代] - 你的外部 for 循环从 $i = 3 开始,所以你的内部 for 循环将把 $i 的值视为 3 并且内部循环执行三次,因为 $j

[FOURTH ITERATION] - 你的外部 for 循环以 $i = 4 开始,所以你的内部 for 循环会将 $i 的值视为 4,内部循环执行四次,因为 $j

[FIFTH ITERATION] - 你的外部 for 循环以 $i = 5 开始,所以你的内部 for 循环会将 $i 的值视为 5,内部循环执行五次,因为 $j

第二个外部循环逻辑:

[FIRST ITERATION] - 您的外部 for 循环以 $i = 5 开始,因此您的内部 for 循环将 $i 的值视为 5,内部循环执行五次,因为 $j

[SECOND ITERATION] - 你的外部 for 循环以 $i = 4 开始,所以你的内部 for 循环会将 $i 的值视为 4,内部循环执行四次,因为 $j

[第三次迭代] - 你的外部 for 循环从 $i = 3 开始,所以你的内部 for 循环将把 $i 的值视为 3 并且内部循环执行三次,因为 $j

[FOURTH ITERATION] - 你的外部 for 循环以 $i = 2 开始,所以你的内部 for 循环会将 $i 的值视为 2 并且内部循环执行两次,因为 $j

[FIFTH ITERATION] - 你的外部 for 循环以 $i = 5 开始,所以你的内部 for 循环会将 $i 的值视为 5 并执行内部循环,因为 $j

请记住,您的第二个外部 for 循环不是递增,而是在每次执行循环时递减一。所以它以 5 开头,以 1 结尾。

【讨论】:

  • 这是一个非常强大的例子。谢谢大佬。
  • 如果您可以向我解释循环的另一部分,以及您如何解释第一部分。谢谢你。我会投票
  • 发布编辑以包含第二个外部 for 循环逻辑。
  • 打印哪个 * ? $i 还是 $j ?谢谢
【解决方案2】:

您从针对每一行运行的主计数器 $i 开始。它从 1 开始,到 5(包括在内)时将停止,因此您将获得 5 行。

在该循环中,您有一个星号计数器 $j,它从 1 开始,在达到 $i 的值(包括在内)时停止。所以这是它所做的迭代:

$i == 1

  • 迭代 1:$j == 1:它打印 *
  • $j == $i :循环停止并打印 &lt;br /&gt;

$i == 2

  • 迭代 1:$j == 1:它打印 *
  • 迭代 2:$j == 2:它打印 *
  • $j == $i :循环停止并打印 &lt;br /&gt;

$i == 3

  • 迭代 1:$j == 1:它打印 *
  • 迭代 2:$j == 2:它打印 *
  • 迭代 3:$j == 3:它打印 *
  • $j == $i :循环停止并打印 &lt;br /&gt;

... 以此类推,直到$i == 5,循环在打印&lt;br /&gt;之前打印5颗星

然后您有第二个循环,其中$i 从 5 开始并下降到包含 1(因此它将运行 5 次),内部循环与第一个循环相同,因此它将打印与每行$i 的值。 $i 的连续值是 5、4、3、2,然后是 1,因此您的脚本会打印 5 个星,然后是 4,然后是 3,然后是 2,然后是 1。

结果:

您发布的代码打印以下内容:

*
*  *
*  *  *
*  *  *  *
*  *  *  *  *
*  *  *  *  *
*  *  *  *
*  *  *
*  *
*

正如预期的那样。

如果这不是您对脚本的期望,请描述预期的行为,以便我们告诉您应该更改的部分。

【讨论】:

    猜你喜欢
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 2019-01-21
    • 2012-02-24
    • 1970-01-01
    • 2014-07-01
    • 2013-06-20
    相关资源
    最近更新 更多