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

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

Susan Sarandon
リリース: 2024-12-02 09:36:14
オリジナル
159 人が閲覧しました

How to Efficiently Iterate Through Multiple Arrays Simultaneously in PHP?

2 つの配列を同時にループする

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

ネストされた foreach ループを使用して複数の配列をループする場合、次のような落とし穴を避けることが重要です。最初の配列の各要素に対して 2 番目の配列のすべての要素をループします。これにより、不正確な結果が生じます。

解決策

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

array_map() を使用すると、複数の配列を引数として渡し、同時にループすることができます。

array_map(function($v1, $v2){
    echo $v1 . "<br>";
    echo $v2 . "<br><br>";
}, $data1, $data2);
ログイン後にコピー

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

MultipleIterator を作成し、ループする配列ごとに ArrayIterator オブジェクトをアタッチします。

$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() を使用してそれらをキーと値のペアに結合します。$data1 がキー、$data2は値です。

foreach(array_combine($data1, $data2) as $d1 => $d2) {
    echo $d1 . "<br>";
    echo $d2 . "<br><br>";
}
ログイン後にコピー

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

3 つ以上の配列または不明な数の配列をループするには、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 で複数の配列を同時に効率的に反復処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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