Position actuelle: Accueil> Derniers articles> Conseils pour comparer l'utilisation des fonctions générateurs pour générer des tableaux puis

Conseils pour comparer l'utilisation des fonctions générateurs pour générer des tableaux puis

M66 2025-06-06

Comment générer un tableau à l'aide de la fonction du générateur et comparer les différences à l'aide d'Array_Diff_uassoc?

En PHP, nous pouvons générer efficacement de grands tableaux via des fonctions de générateur sans stocker le tableau entier en mémoire. La fonction du générateur utilise le mot clé de rendement , qui peut renvoyer les valeurs un par un, et convient au traitement des ensembles de données à grande échelle. Dans le même temps, la fonction Array_Diff_uassoc fournie par PHP peut comparer les différences entre deux tableaux, et pendant le processus de comparaison, une fonction de rappel personnalisée est utilisée pour déterminer comment comparer les clés du tableau.

1. Introduction aux fonctions du générateur

La fonction du générateur est implémentée en PHP avec le mot clé de rendement , qui nous permet de renvoyer des valeurs étape par étape au lieu de renvoyer le tableau entier à la fois. Cela peut réduire efficacement la consommation de mémoire, en particulier lors du traitement de grandes quantités de données.

Voici un exemple de fonction de générateur simple:

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

La fonction GeneraTenumbers ci-dessus génère des entiers de $ début à $ fin . Lorsque la fonction est appelée, le générateur renvoie chaque valeur étape par étape, plutôt que de renvoyer le tableau entier à la fois.

2. Générez un tableau à l'aide du générateur

Nous pouvons utiliser des fonctions de générateur pour générer des tableaux. Tout d'abord, une série de données est générée par le générateur et les résultats du générateur sont convertis en un tableau.

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

$gen = generateNumbers(1, 5);
$array1 = iterator_to_array($gen);  // Convertir les résultats du générateur en tableau

print_r($array1);
?>

Ce code sera sorti:

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

3. Utilisez Array_Diff_uassoc pour comparer les différences de tableau

La fonction Array_Diff_uassoc de PHP est utilisée pour calculer la différence entre deux tableaux, et lors de la comparaison des clés, vous pouvez utiliser une fonction de rappel personnalisée. Cette fonction de rappel doit accepter deux touches comme paramètres et renvoyer un entier indiquant le résultat de la comparaison entre les touches.

La syntaxe de base de Array_Diff_uassoc est la suivante:

 array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
  • $ array1 et $ array2 sont deux tableaux qui doivent être comparés.

  • $ key_compare_func est une fonction de rappel qui compare les clés du tableau.

Supposons que nous ayons deux Arrays Array1 et Array2 , nous voulons comparer leurs clés et découvrir les différences. Nous pouvons définir une fonction de rappel pour effectuer des comparaisons clés.

Voici un exemple montrant comment utiliser le générateur pour générer un tableau et comparer les différences via array_diff_uassoc :

 <?php
// Fonctions du générateur
function generateNumbers($start, $end) {
    for ($i = $start; $i <= $end; $i++) {
        yield $i;
    }
}

// Comparaison des fonctions de rappel pour deux clés
function compareKeys($key1, $key2) {
    return $key1 <=> $key2;
}

// Générer deux tableaux
$gen1 = generateNumbers(1, 5);
$array1 = iterator_to_array($gen1);

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

// utiliser array_diff_uassoc Comparaison des principales différences entre deux tableaux
$result = array_diff_uassoc($array1, $array2, 'compareKeys');

// Différence de sortie
print_r($result);
?>

En supposant que Array1 est [1, 2, 3, 4, 5] et Array2 est [3, 4, 5, 6, 7] , alors Array_Diff_uassoc calculera leurs différences de clés, et le résultat est le suivant:

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

4. Résumé

En utilisant des fonctions de générateur, nous pouvons générer efficacement des tableaux, en particulier lorsque vous traitez avec les mégadonnées. La fonction Array_Diff_uassoc fournit un moyen flexible de comparer les différences clés entre deux tableaux, vous permettant de personnaliser les règles de comparaison. En combinant ces deux, nous pouvons gérer efficacement les opérations de comparaison complexe de réseau.