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

PHP で 2 つの配列を同時に効率的に反復処理するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-01 08:26:10869ブラウズ

How to Efficiently Iterate Through Two Arrays Simultaneously in PHP?

2 つの配列を一度にループする方法

2 つの配列を同時にループするには、質問で提供されているコードはネストされた foreach ループを使用します。ただし、このアプローチは不正確な結果を生成するため非効率的です。

この課題を克服するための効果的な解決策は次のとおりです。

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

このメソッドでは、複数の配列を同時にループできます。

array_map(function($v1, $v2){
    echo $v1 . "<br>";
    echo $v2 . "<br><br>";
}, $data1, $data2);

2. MultipleIterator メソッド (PHP >= 5.3)

MultipleIterator を作成し、目的の配列に ArrayIterators をアタッチします。

$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><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><br>";
}

4. array_combine() メソッド (PHP >= 5.0)

配列に一意の値がある場合は、array_combine() を使用して、最初の配列の要素をキーとして、2 番目の配列の要素を値として持つ単一の配列を作成します。 .

foreach(array_combine($data1, $data2) as $d1 => $d2) {
    echo $d1 . "<br>";
    echo $d2 . "<br><br>";
}

5. call_user_func_array() メソッド (PHP >= 5.6)

未知の数の配列をループするには、array_map() と call_user_func_array() を組み合わせます。

$func = function(...$numbers){
    foreach($numbers as $v)
        echo $v . "<br>";
    echo "<br>";
};

call_user_func_array("array_map", [$func, $data1, $data2]);

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。