Algorithme PHP pour générer des combinaisons de tableaux
En PHP, générer des combinaisons d'éléments à partir d'un tableau est souvent une exigence pratique. Considérons un tableau contenant les nombres 1, 2, 3, 4, 5, 6 et 7. Supposons que nous souhaitions sélectionner 5 éléments de ce tableau en ignorant leur ordre. Par exemple, (1, 2, 3, 4, 5) et (4, 5, 3, 1, 2) sont considérés comme la même combinaison.
Solution utilisant une classe itérateur
Une solution bien conçue consiste à utiliser une classe Iterator nommée Combinaisons. Cette classe est une implémentation de l'interface Iterator et offre une méthode simple pour parcourir les combinaisons :
class Combinations implements Iterator { // ... (class definition as provided in the answer) }
Au sein de cette classe, les combinaisons peuvent être générées en appelant de manière itérative la méthode next(), qui renvoie le prochain combinaison comme valeur actuelle. Ce processus se poursuit jusqu'à ce que la méthode valid() renvoie false, indiquant que toutes les combinaisons ont été épuisées.
Exemple
Pour illustrer, créons une instance de la classe Combinaisons et parcourez les combinaisons du tableau donné :
$combinations = new Combinations([1, 2, 3, 4, 5, 6, 7], 5); foreach ($combinations as $combination) { echo implode(', ', $combination) . ' '; }
Ce code produira ce qui suit résultat :
1, 2, 3, 4, 5 1, 2, 3, 4, 6 1, 2, 3, 4, 7 1, 2, 3, 5, 6 1, 2, 3, 5, 7 1, 2, 3, 6, 7 1, 2, 4, 5, 6 1, 2, 4, 5, 7 1, 2, 4, 6, 7 1, 2, 5, 6, 7 1, 3, 4, 5, 6 1, 3, 4, 5, 7 1, 3, 4, 6, 7 1, 3, 5, 6, 7 1, 4, 5, 6, 7 2, 3, 4, 5, 6 2, 3, 4, 5, 7 2, 3, 4, 6, 7 2, 3, 5, 6, 7 2, 4, 5, 6, 7 3, 4, 5, 6, 7
En utilisant cette solution, on peut générer et parcourir efficacement des combinaisons d'éléments de tableau en PHP, relevant ainsi le défi décrit dans la requête initiale.
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!