【PHP】for文でのcount()関数の記載位置で変わること
はじめに
for文を使用する際、配列に格納されている要素数分だけ処理を実行したい場合、
下記の書き方をよく見かけるかと思いますが、実はこの書き方にはデメリットがあります。
今回は、下記の書き方が産むデメリットと解決策について解説していきます。
コード
$fruits = ['apple','orange','banana','lemon'];
for ($i=0; $i < count($fruits); $i++) {
処理
}
for文の構文
for (式1; 式2; 式3) {
処理
}
- 式1:ループ開始時に無条件に 評価(実行)されます。
- 式2:各繰り返しの開始時に、評価(実行)されます。 その式の値がtrueが場合、ループは継続され、括弧 内の文が実行されます。値がfalseの場合、ループの 実行は終了します。
- 式3:各繰り返しの後、評価(実行)されます。
デメリット
構文に記載があるように、式2にcount()関数を記載してしまうと繰り返しの回数分count関数が実行され、下記のデメリットを産むことになります。
- 式2が評価される度に、関数が実行される為、処理速度が重くなります。
- for文の中(ループ中)で配列の要素数が変更された場合、実行条件が変わってしまいます。
例文
下記のコードですと、for文開始時に配列の要素数が4つある為、4回繰り返し処理が実行される想定ですが、
for文が処理される毎に要素の数が減少していく為、それにともなってcount($fruits)も減少していきます。
その為、下記のループは2回しか実行されません。
$fruits = ['apple','orange','banana','lemon'];
for ($i=0; $i < count($fruits); $i++) {
処理
unset($fruits[$i]);
}
解決策1:cout()関数をfor文の式の外に記載する
$fruits = ['apple','orange','banana','lemon'];
$count = count($fruits);
for ($i=0; $i < $count; $i++) {
処理
unset($fruits[$i]);
}
解決策2:foreach文を使用する
$fruits = ['apple','orange','banana','lemon'];
foreach($fruits as $value) {
処理
}
まとめ
上記で解説したように関数1つの記載位置を変更するだけで、処理速度が速くもなり遅くもなります。
処理速度が遅くなれば、使用者にストレスを感じさせてしまい、提供者にも悪影響を及ぼします。
処理速度改善はプログラミングにとって常となりますので、日頃から心掛けて作業を行っていきましょう。
今回の記事が、みなさんの快適なプログラミングの一翼を担えれば幸いです。
「東三河・西三河で働く!」高時給な派遣求人が満載!
-
前の記事
【効果的な図形の使い方】図形が与える心理的効果とは 2024.07.29
-
次の記事
2024年7月の学習内容 2024.08.07