Heim  >  Artikel  >  Backend-Entwicklung  >  Lazy-Calculation-Implementierung von Array-Schnittpunkt und -Vereinigung in PHP

Lazy-Calculation-Implementierung von Array-Schnittpunkt und -Vereinigung in PHP

WBOY
WBOYOriginal
2024-05-01 08:54:021000Durchsuche

PHP-Lazy-Berechnung von Array-Schnittpunkten und -Vereinigungen In PHP können Sie Generatoren verwenden, um verzögerte Berechnungen von Array-Schnittpunkten und -Vereinigungen zu implementieren, um die Berechnung der Ergebnisse zu verzögern, bis sie benötigt werden: Schnittpunkt: Verwenden Sie den Generator array_intersect_lazy() nur, wenn die Array-Elemente vorhanden sind equal Nur dann iteriert und ausgegeben. Union: Iterieren Sie mit dem Generator array_union_lazy() über zwei Arrays und geben Sie sie als Ergebnis aus, wobei Sie doppelte Elemente herausfiltern.

Lazy-Calculation-Implementierung von Array-Schnittpunkt und -Vereinigung in PHP

Verzögerte Berechnungsimplementierung von Array-Schnittpunkt und -Vereinigung in PHP

In PHP sind die Verarbeitung von Array-Schnittpunkt und -Vereinigung gängige Operationen. Normalerweise verwenden wir die Funktion array_intersect()array_merge(), um diese Vorgänge zu implementieren. Dies führt jedoch dazu, dass das Ergebnis sofort berechnet wird, was insbesondere bei großen Arrays manchmal zu Leistungsproblemen führen kann.

Eine verzögerte Berechnung kann dieses Problem lösen. Sie ermöglicht es uns, die Berechnung zu verzögern, bis das Ergebnis tatsächlich benötigt wird. Mithilfe von Generatoren können wir leicht verzögert berechnete Array-Schnittpunkte und -Vereinigungen implementieren.

Implementierung

Schnittpunkt

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

Union

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

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

Praktischer Fall

$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

Diese Generatoren ermöglichen es uns, den Schnittpunkt oder die Vereinigung direkt zu iterieren und auszudrucken die gesamte Ergebnisberechnung abzuschließen. Dies kann die Leistung auf großen Arrays erheblich verbessern.

Das obige ist der detaillierte Inhalt vonLazy-Calculation-Implementierung von Array-Schnittpunkt und -Vereinigung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn