Maison  >  Article  >  développement back-end  >  Une explication de la façon de calculer le produit cartésien de plusieurs ensembles en PHP

Une explication de la façon de calculer le produit cartésien de plusieurs ensembles en PHP

jacklove
jackloveoriginal
2018-06-08 18:11:411613parcourir

Produit cartésien fait référence au produit cartésien (produit cartésien) de deux ensembles X et Y en mathématiques, également appelé produit direct, exprimé par X*Y, le premier objet est X est membre de Y et le deuxième objet est l'un des membres de toutes les paires ordonnées possibles de Y.

Supposons que l'ensemble A={a,b} et l'ensemble B={0,1,2}, alors le produit cartésien de les deux ensembles sont {(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}
Idée : Calculez d'abord le Produit cartésien du premier ensemble et du deuxième ensemble, et enregistrez le résultat en tant que nouvel ensemble.
Ensuite, le nouvel ensemble est utilisé pour calculer le produit cartésien avec l'ensemble suivant, et le cycle continue jusqu'à ce que le produit cartésien soit calculé avec le dernier ensemble.
Par exemple, il existe les ensembles suivants, et le produit cartésien doit être calculé

<?php$sets = array(    array(&#39;白色&#39;,&#39;黑色&#39;,&#39;红色&#39;),    array(&#39;透气&#39;,&#39;防滑&#39;),    array(&#39;37码&#39;,&#39;38码&#39;,&#39;39码&#39;),    array(&#39;男款&#39;,&#39;女款&#39;)
);?>

Le code est le suivant :

<?php/**
 * php 计算多个集合的笛卡尔积
 * Date:    2017-01-10
 * Author:  fdipzone
 * Ver:     1.0
 *
 * Func
 * CartesianProduct 计算多个集合的笛卡尔积
 *//**
 * 计算多个集合的笛卡尔积
 * @param  Array $sets 集合数组
 * @return Array
 */function CartesianProduct($sets){

    // 保存结果
    $result = array();    // 循环遍历集合数据
    for($i=0,$count=count($sets); $i<$count-1; $i++){        // 初始化
        if($i==0){            $result = $sets[$i];
        }        // 保存临时数据
        $tmp = array();        // 结果与下一个集合计算笛卡尔积
        foreach($result as $res){            foreach($sets[$i+1] as $set){                $tmp[] = $res.$set;
            }
        }        // 将笛卡尔积写入结果
        $result = $tmp;

    }    return $result;

}// 定义集合$sets = array(    array(&#39;白色&#39;,&#39;黑色&#39;,&#39;红色&#39;),    array(&#39;透气&#39;,&#39;防滑&#39;),    array(&#39;37码&#39;,&#39;38码&#39;,&#39;39码&#39;),    array(&#39;男款&#39;,&#39;女款&#39;)
);$result = CartesianProduct($sets);
print_r($result);?>

Sortie :

Array(
    [0] => 白色透气37码男款
    [1] => 白色透气37码女款
    [2] => 白色透气38码男款
    [3] => 白色透气38码女款
    [4] => 白色透气39码男款
    [5] => 白色透气39码女款
    [6] => 白色防滑37码男款
    [7] => 白色防滑37码女款
    [8] => 白色防滑38码男款
    [9] => 白色防滑38码女款
    [10] => 白色防滑39码男款
    [11] => 白色防滑39码女款
    [12] => 黑色透气37码男款
    [13] => 黑色透气37码女款
    [14] => 黑色透气38码男款
    [15] => 黑色透气38码女款
    [16] => 黑色透气39码男款
    [17] => 黑色透气39码女款
    [18] => 黑色防滑37码男款
    [19] => 黑色防滑37码女款
    [20] => 黑色防滑38码男款
    [21] => 黑色防滑38码女款
    [22] => 黑色防滑39码男款
    [23] => 黑色防滑39码女款
    [24] => 红色透气37码男款
    [25] => 红色透气37码女款
    [26] => 红色透气38码男款
    [27] => 红色透气38码女款
    [28] => 红色透气39码男款
    [29] => 红色透气39码女款
    [30] => 红色防滑37码男款
    [31] => 红色防滑37码女款
    [32] => 红色防滑38码男款
    [33] => 红色防滑38码女款
    [34] => 红色防滑39码男款
    [35] => 红色防滑39码女款
)

Cet article explique comment PHP calcule le produit cartésien de plusieurs ensembles. Pour plus de contenu connexe, veuillez faire attention au site Web chinois de PHP.

Recommandations associées :

À propos de l'utilisation et de l'analyse des performances de open_basedir dans la configuration du répertoire d'inclusion de fichiers php

À propos d'ajax cross -accès au domaine Une explication de la solution à la perte de cookie

Une explication de la méthode de calcul de key_len dans mysql expliquer

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