派遣のお仕事情報満載!!アドバンティアで求人検索

【PHP】for文でのcount()関数の記載位置で変わること

YK
【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つの記載位置を変更するだけで、処理速度が速くもなり遅くもなります。
処理速度が遅くなれば、使用者にストレスを感じさせてしまい、提供者にも悪影響を及ぼします。
処理速度改善はプログラミングにとって常となりますので、日頃から心掛けて作業を行っていきましょう。
今回の記事が、みなさんの快適なプログラミングの一翼を担えれば幸いです。

「東三河・西三河で働く!」高時給な派遣求人が満載!

CTA-IMAGE いまあなたは転職活動で困っていませんか? 「こんなに転職活動を頑張っているのに、良い職場に出会えないのだろう?」 そんな悩みがあるなら派遣会社アドバンティアで解決しましょう! 軽作業・工場系・事務系のお仕事が満載!! 高時給!週払い可能!家電付きアパート・マンションを貸し出し♪車・携帯レンタル可能!アドバンティアは充実したサポート体制であなたのご応募をお待ちしております。 TEL面接実施中!!

>> アドバンティア求人検索はこちら <<

このページを評価してください

[kkstarratings force]