web-dev-qa-db-ja.com

2つの変数を持つループのPHP?

これを行うことは可能ですか? (これが私のコードです)

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

私はこのようなものが欲しい:

var0は10です

var1は9です

var2は8です.。

しかし、私のコードは間違っています、それは巨大なリストを与えます。 PHPの第一人者、助けてください!!

27
jingleboy99

これを試して:

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

2つの変数$i$kは、それぞれ010で初期化されます。各ループの終わりに、$iは1ずつ増加し($i++)、$kは1ずつ減少します($k--)。したがって、$iの値は0、1、…、10になり、$kの値は10、9、…、0になります。

64
Gumbo

2番目の変数の条件を追加することもできます

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

合計121回(11x11)ループしているので、達成したい目的で2つのforループを使用しないでください。本当に必要なのは、jを追跡するループの外側でカウンターを宣言し、ループの内側でjをデクリメントすることです。

編集:私のためにインクルージョンをキャッチしてくれたGumboに感謝します。

1
AlbertoPL

コードのように、反対方向に実行されている2つの値がある場合は、単純に減算できます。

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

しかし、私はそれが本当にあなたが望むものではないと思いますか?また、提案された コンマ演算子 に注意してください。それは素晴らしいことですが、 CおよびC++ のような他の言語でいたずらな副作用を引き起こす可能性があります。PHPは異なる方法で実装します。

1
bluebrother

他の(正しい)答えを拡張するために、あなたがしていたことはnesting loopsと呼ばれます。これは、外側のループ(最初のループ)の反復ごとに、内側のループ全体を完了していたことを意味します。これは、11個の出力の代わりに、11 + 11 + 11 + ... = 11 * 11出力を取得することを意味します

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

開始時刻と終了時刻を取得してデータベースに保存しようとしました。開始時刻と終了時刻を指定すると、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)
        ]);
   }
0
Chika Ugwuanyi