Heim >Backend-Entwicklung >PHP-Tutorial >Lazy-Calculation-Implementierung von Array-Schnittpunkt und -Vereinigung in PHP
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.
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!