Aktueller Standort: Startseite> Neueste Artikel> Tipps zum Vergleich von Generatorfunktionen zum Generieren von Arrays und dann

Tipps zum Vergleich von Generatorfunktionen zum Generieren von Arrays und dann

M66 2025-06-06

Wie generiere ich ein Array mithilfe der Generatorfunktion und vergleichen Sie Unterschiede mithilfe von Array_Diff_Uassoc?

In PHP können wir große Arrays durch Generatorfunktionen effizient erzeugen, ohne das gesamte Array im Speicher zu speichern. Die Generatorfunktion verwendet das Keyword , das nacheinander Werte zurückgeben und für die Verarbeitung großer Datensätze geeignet ist. Gleichzeitig kann die von PHP bereitgestellte array_diff_uassoc -Funktion die Unterschiede zwischen zwei Arrays vergleichen, und während des Vergleichsprozesses wird eine benutzerdefinierte Rückruffunktion verwendet, um zu bestimmen, wie die Schlüssel des Arrays verglichen werden.

1. Einführung in Generatorfunktionen

Die Generatorfunktion wird in PHP mit dem Keyword für die Ertragsrendite implementiert, sodass wir die Werte Schritt für Schritt zurückgeben können, anstatt das gesamte Array gleichzeitig zurückzugeben. Dies kann den Speicherverbrauch effektiv reduzieren, insbesondere bei der Verarbeitung großer Datenmengen.

Hier ist ein Beispiel für eine einfache Generatorfunktion:

 <?php
function generateNumbers($start, $end) {
    for ($i = $start; $i <= $end; $i++) {
        yield $i;
    }
}
?>

Die oben genannte Generateumbers -Funktion erzeugt Ganzzahlen von $ Start bis $ Ende . Wenn die Funktion aufgerufen wird, gibt der Generator jeden Wert Schritt für Schritt zurück, anstatt das gesamte Array gleichzeitig zurückzugeben.

2. Generieren Sie ein Array mit dem Generator

Wir können Generatorfunktionen verwenden, um Arrays zu generieren. Zunächst wird eine Datenreihe über den Generator generiert und die Generatorergebnisse in ein Array konvertiert.

 <?php
function generateNumbers($start, $end) {
    for ($i = $start; $i <= $end; $i++) {
        yield $i;
    }
}

$gen = generateNumbers(1, 5);
$array1 = iterator_to_array($gen);  // Konvertieren Sie Generatorergebnisse in Array

print_r($array1);
?>

Dieser Code wird ausgegeben:

 Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

3. Verwenden Sie Array_Diff_Uassoc , um Array -Unterschiede zu vergleichen

Die Funktion von PHP von Array_DIFF_UASSOC wird verwendet, um die Differenz zwischen zwei Arrays zu berechnen, und beim Vergleichen von Tasten können Sie eine benutzerdefinierte Rückruffunktion verwenden. Diese Rückruffunktion sollte zwei Schlüssel als Parameter akzeptieren und eine Ganzzahl zurückgeben, die das Ergebnis des Vergleichs zwischen den Schlüssel angibt.

Die grundlegende Syntax von Array_Diff_Uassoc lautet wie folgt:

 array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
  • $ array1 und $ array2 sind zwei Arrays, die verglichen werden müssen.

  • $ key_compare_func ist eine Rückruffunktion, die Array -Tasten vergleicht.

Angenommen, wir haben zwei Arrays Array1 und Array2 , wir möchten ihre Schlüssel vergleichen und die Unterschiede herausfinden. Wir können eine Rückruffunktion definieren, um wichtige Vergleiche durchzuführen.

Hier ist ein Beispiel, das zeigt, wie der Generator ein Array generiert und Unterschiede über Array_Diff_Uassoc verglichen:

 <?php
// Generatorfunktionen
function generateNumbers($start, $end) {
    for ($i = $start; $i <= $end; $i++) {
        yield $i;
    }
}

// Vergleichen Sie Rückruffunktionen für zwei Schlüssel
function compareKeys($key1, $key2) {
    return $key1 <=> $key2;
}

// Generieren zwei Arrays
$gen1 = generateNumbers(1, 5);
$array1 = iterator_to_array($gen1);

$gen2 = generateNumbers(3, 7);
$array2 = iterator_to_array($gen2);

// verwenden array_diff_uassoc Vergleich der Schlüsselunterschiede zwischen zwei Arrays
$result = array_diff_uassoc($array1, $array2, 'compareKeys');

// Ausgangsunterschied
print_r($result);
?>

Angenommen, Array1 ist [1, 2, 3, 4, 5] und Array2 [3, 4, 5, 6, 7] , dann berechnet Array_diff_uassoc ihre Tastenunterschiede, und das Ergebnis lautet wie folgt:

 Array
(
    [0] => 1
    [1] => 2
)

4. Zusammenfassung

Durch die Verwendung von Generatorfunktionen können wir Arrays effizient generieren, insbesondere im Umgang mit Big Data. Die Funktion array_diff_uassoc bietet eine flexible Möglichkeit, die wichtigsten Unterschiede zwischen zwei Arrays zu vergleichen, sodass Sie die Vergleichsregeln anpassen können. Wenn wir diese beiden kombinieren, können wir komplexe Array -Vergleichsvorgänge effizient verarbeiten.