国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ バックエンド開発 PHPチュートリアル PHP の for と foreach ではどちらが効率的ですか?

PHP の for と foreach ではどちらが効率的ですか?

Jun 13, 2016 pm 12:00 PM
for foreach php

PHP の for と foreach ではどちらが効率的ですか?

for と foreach ではどちらが効率的ですか?理由は何ですか?

PHP で最も効率的な for および foreach は foreach

for ループ トラバーサル メソッドです:

public function getForTime(){
    $big_Array = range(0,1000000,1);

     /* for循環(huán)遍歷數(shù)組示例 */
    $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 &#39;for循環(huán)遍歷耗時:&#39;.$for_Time.&#39;<br>&#39;;
}

foreach ループ走査メソッド:

public function getForeachTime(){
$big_Array = range(0,1000000,1);

 /* foreach循環(huán)遍歷數(shù)組示例 */
    $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 &#39;foreach循環(huán)遍歷耗時:&#39;.$foreach_Time;
}

時間計算メソッド:

/**
 *  時間統(tǒng)計函數(shù)
 */
private function microtime_float($time = null)
{
   list($usec, $sec) = explode(&#39; &#39;, $time ? $time : microtime());
   return ((float)$usec + (float)$sec);
}

2 つのメソッドの消費時間を見てみましょう

/*
 * 輸出結(jié)果:第一種情況:先count在for循環(huán)遍歷耗時:0.028002023696899 秒
 *                         foreach循環(huán)遍歷耗時:0.003000020980835 秒
 *        第二種情況:在for循環(huán)條件中做count遍歷耗時:0.095005035400391 秒
 *                            foreach循環(huán)遍歷耗時:0.0040009021759033 秒
 * */

から上記のテストから、次の 2 つの結(jié)論が明らかに得られます。

1. for ループのトラバーサルの効率は、foreach ループのトラバーサルの効率よりも低くなります。

2 for ループは重要です。外側(cè)と內(nèi)側(cè) 條件內(nèi)でカウントする場合と比較して、最初の方法の方が効率的です

効率が高い理由は何ですか? この答えを探す前に、まず原則が何なのかについて説明しましょう。

for ループ:

$i から開始するたびに、各ループは $i が count より小さいかどうかを判斷する必要があり、これには多くの時間がかかります。それが継続より小さい場合はループを終了します。

foreach:

foreach は IEnumerable に依存します。

初回変數(shù)GetList() の a が呼び出され、GetEnumerator が返され、最初の An オブジェクトが a に割り當てられます。GetList() の var a がループの最後まで実行されるたびに、

MoveNext が呼び出されます。 ) メソッドは

中に 1 回だけ実行されます。

上記の分析から、明らかに PHP の foreach ループの効率が for ループの効率よりもはるかに高いと結(jié)論付けることができます。おそらく大きな理由は、for では多くの條件判斷が必要になるためです。したがって、將來的には、foreach を使用できる場合はどこでも使用して、効率を 2 倍にすることができます。

しかし: これは本當にそうなのでしょうか?この例はすでに明らかであり、結(jié)論は一目瞭然であると言う人もいるでしょう。他にも可能性はありますか?

真実はそれほど単純ではないと思いますが、これが本當に事実である場合、for ループの意味は何でしょうか?

foreach は for よりも何倍も効率が良いので、foreach を使用するだけで十分ではないでしょうか。個人的には、私がテストした例には一定の制限があり、2 つのループ法の効率を評価するための絶対的な基礎(chǔ)として使用することはできないと感じています。

ただし、PHPer にとっては、コンパイル層がどのように機能するかについては、通常の作業(yè)で foreach ループ トラバーサルを使用する方が良いでしょう。興味があれば、詳しく説明する必要はありません。それを深く研究してください。

関連知識の詳細については、

PHP 中國語 Web サイト をご覧ください。 !

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPで現(xiàn)在のセッションIDを取得する方法は? PHPで現(xiàn)在のセッションIDを取得する方法は? Jul 13, 2025 am 03:02 AM

PHPで現(xiàn)在のセッションIDを取得する方法は、session_id()関數(shù)を使用することですが、session_start()を呼び出して正常に取得する必要があります。 1。Session_start()を呼び出してセッションを開始します。 2。Session_Id()を使用してセッションIDを読み取り、ABC123DEF456GHI789に似た文字列を出力します。 3.返品が空の場合は、Session_start()が欠落しているかどうか、ユーザーが初めてアクセスするか、セッションが破壊されるかを確認します。 4.セッションIDは、ロギング、セキュリティ検証、およびクロスレクエスト通信に使用できますが、セキュリティに注意する必要があります。セッションが正しく有効になり、IDが正常に取得できることを確認してください。

PHPストリングからサブストリングを取得します PHPストリングからサブストリングを取得します Jul 13, 2025 am 02:59 AM

PHP文字列からサブストリングを抽出するには、Substr()関數(shù)を使用できます。これはSyntax substr(String $ string、int $ start、?int $ length = null)であり、長さが指定されていない場合は、端まで傍受されます。中國語などのマルチバイト文字を処理する場合、MB_Substr()関數(shù)を使用して、文字化けコードを避ける必要があります。特定のセパレーターに従って文字列を傍受する必要がある場合は、exploit()を使用するか、strpos()とsubstr()を組み合わせて、ファイル名拡張子またはドメイン名を抽出するなどの実裝できます。

PHPコードの単體テストをどのように実行しますか? PHPコードの単體テストをどのように実行しますか? Jul 13, 2025 am 02:54 AM

unittestinginphpinvolvevidevifignivision like like fike fikionsionsormethodstocatchsearlyandensureliablerefactoring.1)setupphpunitviacomposer、createatestdirectory、and configureautoloadandphpunit.xml.2)

文字列をPHPの配列に分割する方法 文字列をPHPの配列に分割する方法 Jul 13, 2025 am 02:59 AM

PHPでは、最も一般的な方法は、exploit()関數(shù)を使用して文字列を配列に分割することです。この関數(shù)は、指定された區(qū)切り文字を介して文字列を複數(shù)の部分に分割し、配列を返します。構(gòu)文はエクスプロイト(セパレーター、文字列、制限)であり、セパレーターはセパレーターであり、文字列は元の文字列であり、制限はセグメントの最大數(shù)を制御するオプションのパラメーターです。たとえば、$ str = "Apple、Banana、Orange"; $ arr = Explode( "、"、$ str);結(jié)果は["apple"、 "banaです

JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

c c Jul 15, 2025 am 01:30 AM

STD :: Chronoは、現(xiàn)在の時間の取得、実行時間の測定、操作時點と期間の測定、分析時間のフォーマットなど、時間の処理にCで使用されます。 1。STD:: Chrono :: System_Clock :: now()を使用して、現(xiàn)在の時間を取得します。 2。STD:: CHRONO :: STEADY_CLOCKを使用して実行時間を測定して単調(diào)さを確保し、DurateR_CASTを通じてミリ秒、秒、その他のユニットに変換します。 3。時點(Time_Point)と期間(期間)は相互運用可能ですが、ユニットの互換性と時計エポック(エポック)に注意を払う必要があります

PHPは環(huán)境変數(shù)をどのように処理しますか? PHPは環(huán)境変數(shù)をどのように処理しますか? Jul 14, 2025 am 03:01 AM

toaccessenvironmentvariablesinphp、usegetenv()または$ _envsuperglobal.1.getenv( 'var_name')retievessaspecificvariable.2。$ _ en v ['var_name'] AccessESSESESSVARIABLESIFVARIABLES_ORDERINPHP.INIINCLUDES "E" .SETVARIABLESVIACLIWITHVAR = ValuePhpscript.php、inapach

PHPヘッダーの位置は、インクルード後に機能しません PHPヘッダーの位置は、インクルード後に機能しません Jul 13, 2025 am 02:08 AM

ヘッダー(「場所:...」)が機能しない問題に遭遇した場合、一般的な理由と解決策は次のとおりです。1。事前に出力があり、ヘッダーが失敗します。解決策は、スペース、HTML、またはエコーなど、ジャンプ前に出力がないことを確認することです。 2. includeまたは要求ファイルには、過剰な出力またはUTF-8 BOM文字があります。ファイルエンコーディングはチェックして「UTF-8 BOM-FREE」として保存する必要があります。 3. ob_start()を使用してジャンプ前に出力バッファーをオンにし、ob_end_flush()と協(xié)力して出力を遅らせることをお勧めします。 4.ジャンプ後、後続のコード実行を防ぐために終了を追加してください。 5.ヘッダー()関數(shù)呼び出しがすべての出力の前にあることを確認してください。

See all articles