Maison > développement back-end > tutoriel php > 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
Libérer: 2024-11-26 03:19:09
original
339 Les gens l'ont consulté

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

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

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
        )

)
Copier après la connexion

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 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