ホームページ  >  記事  >  バックエンド開発  >  PHP での配列の交差と結合の遅延計算の実装

PHP での配列の交差と結合の遅延計算の実装

WBOY
WBOYオリジナル
2024-05-01 08:54:02999ブラウズ

PHP 配列の交差と共用体の遅延計算 PHP では、ジェネレーターを使用して配列の交差と共用体の遅延計算を実装し、必要になるまで結果の計算を遅らせることができます。 交差: 配列が一致する場合にのみ、array_intersect_lazy() ジェネレーターを使用します。要素が等しい場合にのみ反復して出力します。 Union: array_union_lazy() ジェネレーターを使用して、2 つの配列を反復処理して結果に出力し、重複する要素を除外します。

PHP での配列の交差と結合の遅延計算の実装

PHP 配列交差と共用体の遅延計算実装

PHP では配列交差と共用体の処理を行うのが一般的です。通常、これらの操作を実装するには、array_intersect() 関数と array_merge() 関数を使用します。ただし、これにより結果がすぐに計算されるため、特に大規模な配列の場合、パフォーマンスの問題が発生する可能性があります。

遅延計算は、結果が実際に必要になるまで計算を遅らせることで、この問題を解決します。ジェネレーターを使用すると、遅延計算された配列の交差と共用体を簡単に実装できます。

#実装

##交差点

function array_intersect_lazy($array1, $array2) {
    foreach ($array1 as $key => $value) {
        if (isset($array2[$key]) && $value === $array2[$key]) {
            yield $value;
        }
    }
}

結合

function array_union_lazy($array1, $array2) {
    foreach ($array1 as $key => $value) {
        yield $value;
    }

    foreach ($array2 as $key => $value) {
        if (!isset($array1[$key])) {
            yield $value;
        }
    }
}

実践Case

$array1 = ['foo', 'bar', 'baz'];
$array2 = ['bar', 'qux', 'quux'];

foreach (array_intersect_lazy($array1, $array2) as $value) {
    echo "$value\n";
}

// 输出:
// bar

foreach (array_union_lazy($array1, $array2) as $value) {
    echo "$value\n";
}

// 输出:
// foo
// bar
// baz
// qux
// quux
これらのジェネレーターを使用すると、結果の計算全体が完了するのを待たずに、交差または和集合を直接反復して出力できます。これにより、大規模なアレイのパフォーマンスが大幅に向上します。

以上がPHP での配列の交差と結合の遅延計算の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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