Maison > développement back-end > tutoriel php > Comment puis-je générer toutes les combinaisons uniques d'une longueur spécifique à partir d'un tableau PHP ?

Comment puis-je générer toutes les combinaisons uniques d'une longueur spécifique à partir d'un tableau PHP ?

Mary-Kate Olsen
Libérer: 2024-12-03 05:31:16
original
954 Les gens l'ont consulté

How Can I Generate All Unique Combinations of a Specific Length from a PHP Array?

Combinaisons de tableaux PHP

En PHP, créer des combinaisons d'éléments à partir d'un tableau est une tâche courante. Cet article explore une solution pour générer des combinaisons de longueur spécifique à partir d'un tableau donné, en garantissant que l'ordre des éléments n'est pas pris en compte.

Pour résoudre ce problème, une approche itérative est utilisée, mise en œuvre via la classe Combinaisons. Cette classe sert d'itérateur, permettant un parcours et une récupération efficaces des combinaisons.

La méthode __construct initialise la classe en acceptant un tableau ou une chaîne s et la longueur de combinaison souhaitée k. Il initialise les variables internes et définit la position initiale à zéro.

La méthode _next est chargée de passer à la combinaison suivante. Il parcourt les éléments dans l'ordre inverse, en incrémentant le nombre et en mettant à jour la combinaison en conséquence.

Les méthodes key, current, next, rewind et valid répondent aux exigences de l'interface Iterator, permettant une itération transparente sur les combinaisons.

Un exemple d'utilisation est fourni, démontrant la création d'un objet Combinaisons à partir d'un tableau de nombres :

$array = [1,2,3,4,5,6,7];
$combinations = new Combinations($array, 5);
Copier après la connexion

Itérer sur le L'objet $combinations produira chaque combinaison unique sous forme de chaîne ou de tableau, selon le type d'entrée :

foreach($combinations as $combination) {
    echo $combination . ' ';
}
Copier après la connexion

Sortie :

12345 12346 12347 12356 12357 12367 12456 12457 12467 12567 13456 13457 13467 13567 14567 23456 23457 23467 23567 24567 34567
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal