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