Maison >développement back-end >tutoriel php >Comment puis-je générer toutes les combinaisons d'éléments à partir de plusieurs tableaux en PHP ?

Comment puis-je générer toutes les combinaisons d'éléments à partir de plusieurs tableaux en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-14 13:46:12724parcourir

How Can I Generate All Combinations of Items from Multiple Arrays in PHP?

Générer toutes les combinaisons d'éléments dans plusieurs tableaux en PHP

La tâche consistant à trouver toutes les combinaisons d'éléments dans plusieurs tableaux est souvent rencontrée en programmation . Le nombre de tableaux et d'éléments dans chaque tableau peut varier.

Solution récursive

Une approche récursive peut résoudre efficacement ce problème. La fonction combinaisons() fournit une solution :

function combinations($arrays, $i = 0) {
    if (!isset($arrays[$i])) {
        return array();
    }
    if ($i == count($arrays) - 1) {
        return $arrays[$i];
    }

    // get combinations from subsequent arrays
    $tmp = combinations($arrays, $i + 1);

    $result = array();

    // concat each array from tmp with each element from $arrays[$i]
    foreach ($arrays[$i] as $v) {
        foreach ($tmp as $t) {
            $result[] = is_array($t) ? array_merge(array($v), $t) : array($v, $t);
        }
    }

    return $result;
}

Exemple d'utilisation

Considérez les tableaux :

$arrayA = array('A1','A2','A3');
$arrayB = array('B1','B2','B3');
$arrayC = array('C1','C2');

Pour tout trouver combinaisons :

print_r(combinations(array($arrayA, $arrayB, $arrayC)));

Sortie :

Array
(
    [0] => A1
    [1] => B1
    [2] => C1
    [3] => A1
    [4] => B1
    [5] => C2
    [6] => A1
    [7] => B2
    [8] => C1
    [9] => A1
    [10] => B2
    [11] => C2
    [12] => A1
    [13] => B3
    [14] => C1
    [15] => A1
    [16] => B3
    [17] => C2
    [18] => A2
    [19] => B1
    [20] => C1
    [21] => A2
    [22] => B1
    [23] => C2
    [24] => A2
    [25] => B2
    [26] => C1
    [27] => A2
    [28] => B2
    [29] => C2
    [30] => A2
    [31] => B3
    [32] => C1
    [33] => A2
    [34] => B3
    [35] => C2
    [36] => A3
    [37] => B1
    [38] => C1
    [39] => A3
    [40] => B1
    [41] => C2
    [42] => A3
    [43] => B2
    [44] => C1
    [45] => A3
    [46] => B2
    [47] => C2
    [48] => A3
    [49] => B3
    [50] => C1
    [51] => A3
    [52] => B3
    [53] => C2
)

Cette solution fournit toutes les combinaisons possibles de manière efficace.

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