Comment générer toutes les combinaisons possibles à partir d'un tableau 1D en PHP ?

DDD
Libérer: 2024-10-30 16:38:02
original
488 Les gens l'ont consulté

 How to Generate All Possible Combinations from a 1D Array in PHP?

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);
Copier après la connexion

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>
Copier après la connexion

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);
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!