Maison  >  Article  >  développement back-end  >  Comment calculer le produit cartésien de plusieurs tableaux en PHP ?

Comment calculer le produit cartésien de plusieurs tableaux en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-14 12:15:02878parcourir

How to Calculate the Cartesian Product of Multiple Arrays in PHP?

Produit cartésien de plusieurs tableaux : une solution complète

Lorsque vous traitez plusieurs tableaux, il peut s'avérer nécessaire de générer un tableau contenant toutes les combinaisons possibles d'éléments de ceux-ci tableaux, tout en évitant les répétitions. Cette opération mathématique est connue sous le nom de produit cartésien.

Pour relever ce défi en PHP, pensez à utiliser la fonction suivante :

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

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

print_r($cross);

Cette fonction prend des arguments de longueur variable, chacun représentant un tableau. . Il calcule de manière récursive le produit cartésien en sélectionnant un élément du premier tableau et en le combinant avec tous les produits cartésiens possibles des tableaux restants.

Le résultat est un tableau imbriqué contenant chaque combinaison unique d'éléments des tableaux d'entrée. Dans l'exemple donné, le produit cartésien de deux tableaux produira :

Array 0            Array 1
apples             steve
apples             bob
pears              steve
pears              bob

Cette solution est non seulement efficace pour les tableaux à deux dimensions mais peut également être étendue pour gérer n'importe quel nombre de tableaux. Il fournit une manière concise et élégante de résoudre le problème du produit cartésien en PHP.

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