2016-05-24

n倍でループ【PHP】

PHPに限らずプログラムで開発をするよく使うものの一つに for() ループがあると思います。
今回はいつもとは少し変わったループの仕方を紹介したいと思います。

通常でしたら、以下のように $i++ インクリメントを使って1ずつ変数を追加していくパターンを使うかと思います。
for($i = 0 ; $i < $count ; $i++) {
    // ここで何かの処理
}

もしくは逆に $i-- を使って変数を減らしていく方法もたまに使うのではないでしょうか。
for($i = 5 ; $i > 0 ; $i--) {
    // ここで何かの処理
}

では、今回は for() ループを nの倍数ずつループさせる方法はどうなるでしょうか。
いろいろな方法があると思いますが、ひとつの答えとしては以下のようなものもあります。
$n = 3;
$count = 15;

for ($i = 0; $i < $count; $i+=$n) {
   echo $i ."\n";
}

実行結果としては、以下になります。
0
3
6
9
12
ではひとつずつ中身を見て行きましょう。


$n = 3
これは何倍ずつループするかです。
つまりループを3、6、9...という形にしたい場合は「3」になります。

$count = 15;
最大値はいくらかになります。
つまり、もし15を含めたい場合は $count = 16; に変更するか
for() 内の $i < $count$i <= $count へ変更する必要があります。

ここまでは通常の for() ループを同じですね。
では次。

for ($i = 0; $i < $count; $i+=$n) {}
  1. $i = 0 ・・・初期値が0
  2. $i < $count ・・・ 最大値
  3. $i+=$n ループのたびに倍数を追加
ここが今回の特徴的な部分です。 
$i++ の代わりに $i+=3 を使ってループ内の変数を倍数にしています。

はい。
短いですが、以上解説でした。


【終わりに】
通常はあまりこのようなループを使うことは無いでしょうし、だとすると「正直可読性悪いんじゃ、、、?」と言われると確かにそのとおりですが、これもひとつのアイデアなのかなと思い紹介してみました。(もしかすると結構使われてるのかな?)

今回は以上です。




0 件のコメント:

コメントを投稿