ホームページ > バックエンド開発 > PHPチュートリアル > PHP で複数の配列を同時に効率的にループするにはどうすればよいですか?

PHP で複数の配列を同時に効率的にループするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-03 21:44:11
オリジナル
331 人が閲覧しました

How to Efficiently Loop Through Multiple Arrays Simultaneously in PHP?

2 つの配列を同時にループする方法: 詳細ガイド

問題: ネストされたループの問題

複数の配列を同時にループする場合、共通の問題は、ループ構造が不適切なため、結果が不正確になる可能性があることです。次の例を考えてみましょう。

$data1 = ['a: 1', 'a: 2', 'a: 3', 'a: 4', 'a: 5'];
$data2 = ['b: 1', 'b: 2', 'b: 3', 'b: 4', 'b: 5'];

foreach ($data1 as $item1) {
    foreach ($data2 as $item2) {
        echo $item1 . '<br/>';
        echo $item2 . '<br/>';
        echo '<br/><br/>';
    }
}
ログイン後にコピー

上記のコードはネストされた foreach ループを使用しており、次の出力が生成されます。

a: 1
b: 1

a: 1
b: 2

a: 1
b: 3

a: 1
b: 4

a: 1
b: 5
ログイン後にコピー

ただし、予期される出力は次のとおりです。

a: 1
b: 1

a: 2
b: 2

a: 3
b: 3

a: 4
b: 4

a: 5
b: 5
ログイン後にコピー

問題は、入れ子になったループ構造により、$data1 の各要素が $data2 のすべての要素とともにループされることです。目的の出力を実現するには、両方の配列を同時にループする必要があります。

解決策

複数の配列を同時にループするには、さまざまな方法を使用できます。

  1. array_map() メソッド (PHP) >=5.3):

    このメソッドを使用すると、複数の配列とその要素を処理するコールバック関数を渡すことができます。

    array_map(function($v1, $v2){
        echo $v1 . '<br>';
        echo $v2 . '<br>';
    }, $data1, $data2);
    ログイン後にコピー
  2. MultipleIterator メソッド (PHP >=5.3):

    このメソッドは、複数の配列を同時に反復処理するために使用できる複数の反復子オブジェクトを作成します。

    $it = new MultipleIterator();
    $it->attachIterator(new ArrayIterator($data1));
    $it->attachIterator(new ArrayIterator($data2));
    foreach ($it as $a) {
        echo $a[0] . '<br>';
        echo $a[1] . '<br>';
    }
    ログイン後にコピー
  3. for カウンター付きループ (PHP) >=4.3):

    このメソッドは、カウンター変数を含む for ループを使用して、両方の配列を反復処理します。

    $keysOne = array_keys($data1);
    $keysTwo = array_keys($data2);
    
    $min = min(count($data1), count($data2));
    
    for ($i = 0; $i < $min; $i++) {
        echo $data1[$keysOne[$i]] . '<br>';
        echo $data2[$keysTwo[$i]] . '<br>';
    }
    ログイン後にコピー
  4. array_combine () メソッド (PHP >=5.0):

    このメソッドは、配列に一意の値がある場合に使用できます。配列を 1 つの配列に結合します。$data1 の要素がキー、$data2 の要素が値です。

    foreach (array_combine($data1, $data2) as $d1 => $d2) {
        echo $d1 . '<br>';
        echo $d2 . '<br>';
    }
    ログイン後にコピー
  5. call_user_func_array() メソッド ( PHP >=5.6):

    このメソッドを使用すると、複数のメソッドを渡すことができます配列をコールバック関数に渡します。

    $func = function (...$numbers) {
        foreach ($numbers as $v)
            echo $v . '<br>';
        echo '<br>';
    };
    call_user_func_array("array_map", [$func, $data1, $data2]);
    ログイン後にコピー

以上がPHP で複数の配列を同時に効率的にループするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート