⊗ppSpOtLO 74 of 83 menu

PHPでの循環操作の最適化

軽い操作でも、循環内で何度も 繰り返されると、多くのリソースを 消費してしまう可能性があります。

例を見てみましょう。 ある配列が与えられているとします:

<?php $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; ?>

この配列の要素の平均値を求めてみましょう。 そのためには、要素の合計を求め、 それを要素数で割る必要があります。 あるプログラマーが次のようにこの問題を 既に解決しているとします:

<?php $sum = 0; foreach ($arr as $elem) { $sum += $elem / count($arr); } echo $sum; ?>

この解決策の問題点を考えてみましょう。 技術的にはコードは正しく動作し、 正しい答えを返します。数学的には、 合計全体を数で割ることも、 各加数を数で割ることも正しいからです。

しかし、別の問題が発生します。 問題は、除算を配列の要素数分だけ 実行してしまうことです。結果として、 不要な操作を大量に行うことになります。 なぜなら、除算は最後に1回だけ、 見つかった合計を割るようにすることも できたはずだからです。

コードを最適化してみましょう:

<?php $sum = 0; foreach ($arr as $elem) { $sum += $elem; } echo $sum / count($arr); ?>

以下のコードを最適化してください:

<?php for ($i = 1; $i <= 31; $i++) { if ($i === date('d')) { echo "<b>$i</b><br>"; } if ($i !== date('d')) { echo "$i<br>"; } } ?>
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否