for と foreach ではどちらが効率的ですか?理由は何ですか?
PHP で最も効率的な for および foreach は foreach
for ループ トラバーサル メソッドです:
public function getForTime(){ $big_Array = range(0,1000000,1); /* for循环遍历数组示例 */ $start_For_Time = $this->microtime_float(); //$array_Count = count($big_Array); for ($i=0;$i<count($big_Array);$i++) { $i; } $end_For_Time = $this->microtime_float(); $for_Time = $end_For_Time - $start_For_Time; echo 'for循环遍历耗时:'.$for_Time.'<br>'; }
foreach ループ走査メソッド:
public function getForeachTime(){ $big_Array = range(0,1000000,1); /* foreach循环遍历数组示例 */ $start_Foreach_Time = $this->microtime_float(); foreach ($big_Array as $key=>$val) { $key; } $end_Foreach_Time = $this->microtime_float(); $foreach_Time = $end_Foreach_Time - $start_Foreach_Time; echo 'foreach循环遍历耗时:'.$foreach_Time; }
時間計算メソッド:
/** * 时间统计函数 */ private function microtime_float($time = null) { list($usec, $sec) = explode(' ', $time ? $time : microtime()); return ((float)$usec + (float)$sec); }
2 つのメソッドの消費時間を見てみましょう
/* * 输出结果:第一种情况:先count在for循环遍历耗时:0.028002023696899 秒 * foreach循环遍历耗时:0.003000020980835 秒 * 第二种情况:在for循环条件中做count遍历耗时:0.095005035400391 秒 * foreach循环遍历耗时:0.0040009021759033 秒 * */
から上記のテストから、次の 2 つの結論が明らかに得られます。
1. for ループのトラバーサルの効率は、foreach ループのトラバーサルの効率よりも低くなります。
2 for ループは重要です。外側と内側 条件内でカウントする場合と比較して、最初の方法の方が効率的です
効率が高い理由は何ですか? この答えを探す前に、まず原則が何なのかについて説明しましょう。
for ループ:
foreach:$i から開始するたびに、各ループは $i が count より小さいかどうかを判断する必要があり、これには多くの時間がかかります。それが継続より小さい場合はループを終了します。
foreach は IEnumerable に依存します。初回変数GetList() の a が呼び出され、GetEnumerator が返され、最初の An オブジェクトが a に割り当てられます。GetList() の var a がループの最後まで実行されるたびに、MoveNext が呼び出されます。 ) メソッドは 中に 1 回だけ実行されます。上記の分析から、明らかに PHP の foreach ループの効率が for ループの効率よりもはるかに高いと結論付けることができます。おそらく大きな理由は、for では多くの条件判断が必要になるためです。したがって、将来的には、foreach を使用できる場合はどこでも使用して、効率を 2 倍にすることができます。 しかし: これは本当にそうなのでしょうか?この例はすでに明らかであり、結論は一目瞭然であると言う人もいるでしょう。他にも可能性はありますか? 真実はそれほど単純ではないと思いますが、これが本当に事実である場合、for ループの意味は何でしょうか? foreach は for よりも何倍も効率が良いので、foreach を使用するだけで十分ではないでしょうか。個人的には、私がテストした例には一定の制限があり、2 つのループ法の効率を評価するための絶対的な基礎として使用することはできないと感じています。 ただし、PHPer にとっては、コンパイル層がどのように機能するかについては、通常の作業で foreach ループ トラバーサルを使用する方が良いでしょう。興味があれば、詳しく説明する必要はありません。それを深く研究してください。 関連知識の詳細については、
PHP 中国語 Web サイト をご覧ください。 !

thesecrettokeepingaphp-poweredwebsterunningsmootlyunderheavyloadinvolvesseveralkeystrategies:1)emform opcodecoduceSciptionexecutiontime、2)aatabasequerycachingwithiThing withiThistolessendavasoload、

コードをより明確かつ維持しやすくするため、依存関係が関心(DI)に注意する必要があります。 1)DIは、クラスを切り離すことにより、よりモジュール化されます。2)テストとコードの柔軟性の利便性を向上させ、3)DIコンテナを使用して複雑な依存関係を管理しますが、パフォーマンスの影響と円形の依存関係に注意してください。

はい、最適化されたAphPossibleandessention.1)CachingingusapCutoredatedAtabaseload.2)最適化、効率的なQueries、およびConnectionPooling.3)EnhcodeCodewithBultinctions、Avoididingglobalbariables、およびUsingopcodeching

keyStrategIestsoSificlyvoostphpappliceperformanceare:1)useopcodecachinglikeToreexecutiontime、2)最適化abaseの相互作用とプロペラインデックス、3)3)構成

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 中国語版
中国語版、とても使いやすい

WebStorm Mac版
便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

Dreamweaver Mac版
ビジュアル Web 開発ツール
