Création de produits cartésiens de plusieurs tableaux en PHP
Considérez une structure de tableau PHP comme la suivante :
$array[0][0] = 'apples'; $array[0][1] = 'pears'; $array[0][2] = 'oranges'; $array[1][0] = 'steve'; $array[1][1] = 'bob';
Objectif : Générer une liste tabulée de toutes les combinaisons possibles d'éléments de ces tableaux, sans duplication.
Solution :
Le concept de génération de toutes les combinaisons possibles à partir de plusieurs tableaux est connu sous le nom de « produit cartésien ». Il existe plusieurs méthodes pour y parvenir en PHP.
Une approche consiste à utiliser les fonctions de tableau de PHP. L'extrait de code suivant implémente le produit cartésien en utilisant func_get_args() et la récursion :
function array_cartesian() { $_ = func_get_args(); if(count($_) == 0) return array(array()); $a = array_shift($_); $c = call_user_func_array(__FUNCTION__, $_); $r = array(); foreach($a as $v) foreach($c as $p) $r[] = array_merge(array($v), $p); return $r; }
Pour utiliser cette fonction, transmettez un nombre arbitraire de tableaux comme arguments. Par exemple, pour générer le produit cartésien des tableaux ci-dessus :
$cross = array_cartesian( array('apples', 'pears', 'oranges'), array('steve', 'bob') );
Le résultat, stocké dans $cross, sera un tableau contenant toutes les combinaisons possibles :
print_r($cross);
Sortie :
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 ) )
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!