PHP : Récupération de toutes les combinaisons possibles d'un tableau 1D
Introduction
La tâche La possibilité de récupérer toutes les combinaisons possibles d'éléments à partir d'un tableau 1D peut être rencontrée dans diverses applications de programmation. Cela nécessite une compréhension globale des approches itératives ou récursives pour dériver toutes les permutations possibles.
Approche itérative
Une méthode implique l'utilisation d'une approche itérative, comme démontré dans le code suivant :
<code class="php">function getCombinations($arr) { $result = array(); $count = count($arr); for ($i = 0; $i < (1 << $count); $i++) { $combination = array(); for ($j = 0; $j < $count; $j++) { if (($i & (1 << $j)) != 0) { $combination[] = $arr[$j]; } } $result[] = $combination; } return $result; } $array = array('Alpha', 'Beta', 'Gamma'); $combinations = getCombinations($array); print_r($combinations);
Sortie :
Array ( [0] => Array ( ) [1] => Array ( [0] => Alpha ) [2] => Array ( [0] => Beta ) [3] => Array ( [0] => Alpha [1] => Beta ) [4] => Array ( [0] => Gamma ) [5] => Array ( [0] => Alpha [1] => Gamma ) [6] => Array ( [0] => Beta [1] => Gamma ) [7] => Array ( [0] => Alpha [1] => Beta [2] => Gamma ) )</code>
Explication :
Cette solution itérative utilise la manipulation de bits pour générer tous combinaisons possibles. En incrémentant la valeur de $i sur toutes les valeurs possibles entre 0 et (1 << $count) - 1, la configuration binaire correspondant à chaque combinaison est établie. Vérifier si un bit spécifique de ce modèle est défini permet de déterminer quels éléments du tableau d'entrée appartiennent à la combinaison actuelle.
Approche récursive
Alternativement, une approche récursive L'approche peut être utilisée pour obtenir le même résultat :
<code class="php">function getCombinations($arr, $prefix = '') { $result = array(); foreach ($arr as $element) { $result[] = $prefix . $element; $result = array_merge($result, getCombinations($arr, $prefix . $element . ' ')); } return $result; } $array = array('Alpha', 'Beta', 'Gamma'); $combinations = getCombinations($array); print_r($combinations);
Sortie :
Array ( [0] => Alpha [1] => Alpha Beta [2] => Alpha Beta Gamma [3] => Alpha Gamma [4] => Alpha Gamma Beta [5] => Beta [6] => Beta Alpha [7] => Beta Alpha Gamma [8] => Beta Gamma [9] => Beta Gamma Alpha [10] => Gamma [11] => Gamma Alpha [12] => Gamma Alpha Beta [13] => Gamma Beta [14] => Gamma Beta Alpha )Explication :
Cette solution récursive génère des combinaisons en ajoutant successivement des éléments au préfixe et en récursif sur les éléments restants du tableau. Le cas de base se produit lorsque le tableau est vide, ce qui donne une combinaison valide. Les combinaisons sont ensuite renvoyées dans l'ordre inverse.
En utilisant une approche itérative ou récursive, les développeurs peuvent récupérer efficacement toutes les combinaisons possibles d'éléments d'un tableau 1D, répondant aux diverses exigences des différents scénarios de programmation.
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!