by shigemk2

当面は技術的なことしか書かない

forを使うときループ処理を一部適用させない方法

forだけに限らず、foreach,whileなどでループ処理を行うときは、
原則全ての要素に対し処理を行う事になるが、
一部ループ処理を適用させたくないときは…どうしたらいいのか。。。

サンプル

$array = array();
for($i = 0; $i < 20; $i++) {
if*1 {
$array[$i] = 'hoge';
} else {
$array[$i] = 'homu';
}
}
print_r($array);

結果

Array
(
[0] => homu
[1] => homu
[2] => homu
[3] => homu
[4] => homu
[5] => hoge
[6] => hoge
[7] => hoge
[8] => hoge
[9] => hoge
[10] => homu
[11] => homu
[12] => homu
[13] => homu
[14] => hoge
[15] => hoge
[16] => hoge
[17] => hoge
[18] => homu
[19] => homu
)

5から9、14から17はhomuではなくhogeになってます。
caseを使ってもいいけど、この場合はifのほうが良い気がした。

*1:$i >= 5 && $i <= 9) || ($i >= 14 && $i <= 17