PHP 配列の交差と共用体の遅延計算 PHP では、ジェネレーターを使用して配列の交差と共用体の遅延計算を実装し、必要になるまで結果の計算を遅らせることができます。 交差: 配列が一致する場合にのみ、array_intersect_lazy() ジェネレーターを使用します。要素が等しい場合にのみ反復して出力します。 Union: array_union_lazy() ジェネレーターを使用して、2 つの配列を反復処理して結果に出力し、重複する要素を除外します。
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;
}
}
}
$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 サイトの他の関連記事を参照してください。