33

是否有可能做到这一点?(这是我的代码)

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大师,帮助我!

4

7 回答 7

72

尝试这个:

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

两个变量$i和分别用和$k初始化。在每个循环结束时,将递增一 ( ) 并递减一 ( )。所以会有值 0, 1, ..., 10 和值 10, 9, ..., 0。010$i$i++$k$k--$i$k

于 2009-07-23T15:24:45.343 回答
3

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

for ($i=0, $k=10; $i<=10, $k>=0 ; $i++, $k--) {
    echo "Var " . $i . " is " . $k . "<br>";
}
于 2016-01-07T17:06:59.857 回答
1
array_map(function($i) {
    echo "Var {$i} is ".(10-$i)."<br/>".PHP_EOL; 
}, range(1,10));
于 2015-03-20T14:01:22.057 回答
1

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

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

于 2009-07-23T15:24:58.213 回答
1

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

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

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

于 2009-07-23T15:41:52.047 回答
0

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

于 2009-07-23T15:28:05.133 回答
0

我试图获取开始和结束时间并存储在数据库中,给定开始和结束时间,您每次使用两个变量 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)
        ]);
   }
于 2016-06-25T15:03:46.423 回答