Php for循环有2个变量?

时间:2009-07-23 15:22:54

标签: php for-loop infinite-loop

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

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

我想要这样的事情:

var 0是10

var 1是9

var 2是8 ...

但我的代码错了,它给出了一个巨大的列表。 Php guru,帮帮我!!

7 个答案:

答案 0 :(得分:62)

试试这个:

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。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

编辑:感谢Gumbo为我提供包容。

答案 3 :(得分:1)

如果您的代码看起来像是两个运行相反方向的值,则可以简单地减去:

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

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

答案 4 :(得分:0)

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

,而不是11个输出

答案 5 :(得分:0)

array_map(function($i) {
    echo "Var {$i} is ".(10-$i)."<br/>".PHP_EOL; 
}, range(1,10));

答案 6 :(得分:0)

我尝试在数据库中获取开始和结束时间并存储,给定开始和结束时间,每次使用两个变量i&amp; 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)
        ]);
   }