【问题标题】:Php for loop with 2 variables?php for循环有2个变量?
【发布时间】:2010-11-13 10:33:48
【问题描述】:

可以这样做吗? (这是我的代码)

for ($i = 0 ; $i <= 10 ; $i++){
  for ($j = 10 ; $j >= 0 ; $j--){
     echo "Var " . $i . " is " . $k . "<br>";
  }
}

我想要这样的东西:

变量 0 是 10

变量 1 是 9

变量 2 是 8 ...

但是我的代码是错误的,它给出了一个巨大的列表。 php大师,帮帮我!!

【问题讨论】:

    标签: php for-loop infinite-loop


    【解决方案1】:

    您还可以为第二个变量添加条件

    for ($i=0, $k=10; $i<=10, $k>=0 ; $i++, $k--) {
        echo "Var " . $i . " is " . $k . "<br>";
    }
    

    【讨论】:

      【解决方案2】:

      我试图获取开始和结束时间并将其存储在数据库中,给定开始和结束时间,您每次使用两个变量 i&j 循环遍历

         $start = "09:00";
         $end = "18:00";
         $strEnTim = strtotime("10.00");
      
         $slotStart = strtotime($start);
         $slotEnd = strtotime($end);
         $slotNow = $slotStart;
      
         for( $i=$slotStart, $j=$strEnTim; $i, $j<=$slotEnd; $i+=3600,  $j+=3600) 
         {
              if(( $i < $slotNow) && ( $j < $strEnTim)) continue;
              Slot::create([
                  'start_time' => date("H:i",$i),
                  'end_time' => date("H:i", $j)
              ]);
         }
      

      【讨论】:

        【解决方案3】:
        array_map(function($i) {
            echo "Var {$i} is ".(10-$i)."<br/>".PHP_EOL; 
        }, range(1,10));
        

        【讨论】:

          【解决方案4】:

          如果您的代码看起来像这样,您有两个相反方向的值,您可以简单地减去:

          echo "Var " . $i . " is " . 10 - $i . "<br>";
          

          但我想这不是你真正想要的?另外,请注意建议的comma operator。虽然这是一件好事,但它可能会在其他语言(如 C and C++)中引起顽皮的副作用,因为 PHP 以不同的方式实现它。

          【讨论】:

            【解决方案5】:

            您不应该使用两个 for 循环来实现您想要实现的目标,因为您总共循环了 121 次 (11x11)。您真正想要的只是在跟踪 j 的循环外声明一个计数器,然后在循环内递减 j。

            编辑:感谢 Gumbo 为我捕捉到包含内容。

            【讨论】:

            • 其实是11·11=121(从0到10)。
            • 啊,是的,甚至没看到。
            【解决方案6】:

            为了扩展其他(正确)答案,您所做的称为 nesting 循环。这意味着对于外循环的每次迭代(第一次),您都在完成整个内循环。这意味着您将获得 11 + 11 + 11 + ... = 11 * 11 输出而不是 11 个输出

            【讨论】:

              【解决方案7】:

              试试这个:

              for ($i=0, $k=10; $i<=10 ; $i++, $k--) {
                  echo "Var " . $i . " is " . $k . "<br>";
              }
              

              $i$k这两个变量分别用010初始化。在每个循环结束时,$i 将加一($i++),$k 减一($k--)。所以$i 的值为 0、1、...、10,$k 的值为 10、9、...、0。

              【讨论】:

              • 哇哦。我不知道您在 for 循环中设置了多个变量。不错。
              • 我的下一个问题:你能在 C、C++、Java 和 C# 中做到这一点吗?
              • @Thomas,是的。绝对是 C++ 和 C#,而且我对 C 和 Java 非常肯定,但我尽量避免使用它,因为它会很快变得难以阅读。
              • 只有在极少数情况下我想使用它,但我完全把它放在了我的工具带中。
              • 感谢此代码 sn-p。没想到你可以做这样的事情......
              猜你喜欢
              • 1970-01-01
              • 2018-08-15
              • 1970-01-01
              • 2022-01-26
              • 2015-09-26
              • 2013-09-22
              • 1970-01-01
              • 2012-02-26
              • 1970-01-01
              相关资源
              最近更新 更多