33

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

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の第一人者、助けてください!!

4

7 に答える 7

72

これを試して:

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

2つの変数$iとはそれぞれと$kで初期化されます。各ループの終わりに、各ループは1ずつインクリメントされ()、デクリメントされます()。したがって、値は0、1、…、10 、値は10、9、…、0になります。010$i$i++$k$k--$i$k

于 2009-07-23T15:24:45.343 に答える
3

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

for ($i=0, $k=10; $i<=10, $k>=0 ; $i++, $k--) {
    echo "Var " . $i . " is " . $k . "<br>";
}
于 2016-01-07T17:06:59.857 に答える
1

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

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

于 2009-07-23T15:24:58.213 に答える
1

コードのように、反対方向に実行されている2つの値がある場合は、次のように単純に差し引くことができます。

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

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

于 2009-07-23T15:41:52.047 に答える
1
array_map(function($i) {
    echo "Var {$i} is ".(10-$i)."<br/>".PHP_EOL; 
}, range(1,10));
于 2015-03-20T14:01:22.057 に答える
0

他の(正しい)答えを拡張するために、あなたが行っていたことはネスティングループと呼ばれます。これは、外側のループ(最初のループ)の反復ごとに、内側のループ全体を完了していることを意味します。これは、11個の出力ではなく、出力を取得することを意味し11 + 11 + 11 + ... = 11 * 11ます

于 2009-07-23T15:28:05.133 に答える
0

開始時刻と終了時刻を取得してデータベースに保存しようとしました。開始時刻と終了時刻を指定すると、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)
        ]);
   }
于 2016-06-25T15:03:46.423 に答える