PHPのFORループで任意の数ぶんカウントアップさせていきたい

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

PHPでforを使ってループを行う際に「n数ずつカウントアップ」させたい場合の構文。以下は8つの場合(赤字の+=に注目)。

for( $i = 0; $i < 50; $i += 8 ){
echo $i . ',' // 0,8,16,24,32,40,48,
}

古いコードを見直していたら、ループ処理で数値を2つ飛びや7つ飛びなどを行っている箇所で下記のような箇所を見つけました。

for( $i = 1; $i < $max; $i++ ){
    $i = $i + 1;
    // ループ処理
}

何をしているのかと思ったら、"2,4,6,8,10..."と2つ飛びの数値が欲しかったようです。

動くことは動くのですが、後から見ると「一体何をしているんだ」と思ってしまう書き方です。おそらくforの基本文法のサンプルをそのまま使わないといけないと思ったのでしょう。

単純に、n個ずつカウントアップさせる場合は冒頭の方法がベストだと思います。

しばらくコードを読んでいると、経過日数に対して、奇数日と偶数日、7日ごとに処理をしたかったようです。その場合は、剰余演算といって割った余りの数をつかった方法で下記のようにループ内で処理するとシンプルだと思います。

for( $i = 1; $i < $max; $i++ ){
    if( $i % 2 ){
        // 奇数日の処理
    } else {
        // 偶数日の処理
    }

    if( !($i % 7) ){
        //7日ごとの処理
    }
}

過去の自分含め、人の書いたコードを読むのは反面教師を含め勉強になります。でも、どうせ書くならワクワクするコードが書きたいものです。


スポンサーリンク
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク
レクタングル(大)広告