【问题标题】:Explain Alternative PHP For Loop Syntax: for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);解释替代 PHP For 循环语法: for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
【发布时间】:2016-03-18 20:35:13
【问题描述】:

此示例已作为替代示例(确切地说是示例 4)给出,用于在 PHP.net 上编写 for 循环。

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);

我了解for 循环,我只是不明白为什么在这个版本的编写打印数字1 到10 的for 循环中声明变量$j

仅供参考:从 for 循环中删除变量对结果绝对没有影响。

【问题讨论】:

  • 非常好的问题。 $j = 0 只会被评估一次,然后 $j += $i 是为了……什么?
  • 看起来j 除了和i 之外没有做任何事情...o.O
  • 嗯,文档似乎采用了类似于语言本身的风格。臃肿且充满陷阱。
  • @Richard:在我所知道的每一种使用这种语法的 for 循环的语言中,同样的事情都是可能的……C、C++、Java、JavaScript,可能还有许多这里列出的语言:@987654322 @
  • @Jost 我批评的是文档,而不是这个特定的语法。

标签: php for-loop


【解决方案1】:

我认为这里只是为了说明您可以在逗号中使用多个语句。
它在这里没用,但显示了一个语法示例:

[...] 每个表达式可以为空或包含多个用逗号分隔的表达式。在 expr2 中,所有用逗号分隔的表达式都被求值,但结果取自最后一部分。 [...]

【讨论】:

    【解决方案2】:

    虽然在此示例中似乎没有必要。 $j 似乎正在存储迭代的总和:

     1+2+3+4+5+6+7+8+9+10 = 55
    

    这在某些情况下很有用。所以这意味着这种循环方式相当于在每次迭代中执行多个操作,例如获取总和、平均值、最大值等。示例的重点是您可以应用多个用逗号分隔的语句。

    【讨论】:

      【解决方案3】:

      说明

      for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
      

      for 循环由分号 (;) 分隔的三部分组成。

      1. 初始化
      2. 比较和测试
      3. 递增或递减。

        • 这里$i=1,$j=0是初始化。
        • $i
        • $j += $i, print $i, $i++ 是递增或递减部分

      现在在增量或减量部分中,您有三个任务。
      1. 与最后一个 $i 递增 $j 2.打印$i 3. 将 $i 加 1

      所以在你的程序中 $j 是没有用的。因为不参与 打印或比较和测试。

      所以如果你从每个地方删除 $j 并将它写成这样,循环就非常简单了

      for ($i = 1; $i <= 10; $i++){
          print $i;
      }
      

      但是 $j 变量可以在你从哪里获取这个代码块的循环之后使用。

      喜欢

      for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); 
      print $j;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-20
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 2011-07-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多