Maison  >  Article  >  développement back-end  >  Comment puis-je générer le produit cartésien de plusieurs tableaux en PHP tout en éliminant les répétitions ?

Comment puis-je générer le produit cartésien de plusieurs tableaux en PHP tout en éliminant les répétitions ?

DDD
DDDoriginal
2024-11-26 03:19:09213parcourir

How can I generate the Cartesian product of multiple arrays in PHP while eliminating repetitions?

Calcul du produit cartésien de plusieurs tableaux en PHP

Problème :

Étant donné plusieurs PHP tableaux, comment pouvons-nous générer un produit cartésien qui combine toutes les combinaisons possibles d'éléments de chaque tableau, à l'exclusion répétitions ?

Solution :

Pour obtenir un produit cartésien en PHP, on peut définir une fonction récursive appelée array_cartesian. Cette fonction prend un tableau de tableaux d'entrée comme arguments. Le cas de base se produit lorsque le nombre de tableaux est nul, auquel cas un tableau vide à l'intérieur d'un tableau est renvoyé. Sinon, la fonction utilise la fonction array_shift pour supprimer le premier tableau de la liste, puis s'appelle récursivement avec les tableaux restants.

Pour chaque élément v du premier tableau, la fonction parcourt chaque sous-tableau. p dans le produit cartésien des tableaux restants. Il construit ensuite un nouveau sous-tableau en fusionnant v avec p, et ajoute ce sous-tableau au produit cartésien résultant.

Exemple :

Considérons l'ensemble suivant de tableaux :

$array[0][0] = 'apples';
$array[0][1] = 'pears';
$array[0][2] = 'oranges';

$array[1][0] = 'steve';
$array[1][1] = 'bob';

En passant ces tableaux à la fonction array_cartesian, on peut obtenir le cartésien produit :

$cross = array_cartesian(
    array('apples', 'pears',  'oranges'),
    array('steve', 'bob')
);

print_r($cross);

qui produit le résultat suivant :

Array
(
    [0] => Array
        (
            [0] => apples
            [1] => steve
        )

    [1] => Array
        (
            [0] => apples
            [1] => bob
        )

    [2] => Array
        (
            [0] => pears
            [1] => steve
        )

    [3] => Array
        (
            [0] => pears
            [1] => bob
        )

    [4] => Array
        (
            [0] => oranges
            [1] => steve
        )

    [5] => Array
        (
            [0] => oranges
            [1] => bob
        )

)

Ainsi, la fonction génère efficacement toutes les combinaisons uniques d'éléments à partir des tableaux d'entrée.

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