Maison >développement back-end >tutoriel php >Comment trouver efficacement tous les sous-ensembles non répétitifs d'un tableau en PHP ?

Comment trouver efficacement tous les sous-ensembles non répétitifs d'un tableau en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-16 13:46:03503parcourir

How to Efficiently Find All Non-Repeating Subsets of an Array in PHP?

Rechercher des sous-ensembles d'un tableau en PHP

Lorsqu'il s'agit de bases de données relationnelles, déterminer la fermeture de tous les sous-ensembles d'attributs peut être une tâche complexe . Cet article explore comment trouver efficacement des sous-ensembles non répétitifs en PHP.

Définition du tableau

Nous définissons le tableau $ATTRIBUTES pour représenter l'ensemble des attributs :

$ATTRIBUTES = ['A', 'B', 'C', 'D'];

Génération de sous-ensembles

Pour générer tous les sous-ensembles possibles de $ATTRIBUTES, nous exploitons la fonction powerSet :

function powerSet(array $array) : array {
    // Start with the empty set
    $results = [[]];

    // Iterate over the array elements
    foreach ($array as $element) {
        // Create new combinations by adding the element to existing combinations
        foreach ($results as $combination) {
            $results[] = [...$combination, $element];
        }
    }

    return $results;
}

Exemple d'utilisation

L'exécution de $subsets = powerSet($ATTRIBUTES) produira les sous-ensembles suivants :

[['',''],['A'],['B'],['A','B'],['C'],['A','C'],['B','C'],['A','B','C'],['D'],['A','D'],['B','D'],['A','B','D'],... ]

Cela démontre comment nous pouvons trouver et stocker efficacement tous les sous-ensembles non répétitifs d'un tableau en PHP. Cette approche fournit une solution robuste pour gérer la fermeture des sous-ensembles d'attributs dans les schémas de bases de données relationnelles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn