Cartesian product는 수학에서 두 집합 X와 Y의 데카르트 곱(Cartesian product)을 말하며 직접 곱이라고도 하며 X*Y로 표현되며 첫 번째 객체는 X의 멤버이고 두 번째 객체는 하나입니다. Y의 가능한 모든 순서쌍의 구성원입니다.
집합 A={a,b}과 집합 B={0,1,2}을 가정하면 두 집합의 데카르트 곱은 {(a,0),(a ,1) ,(a,2),(b,0),(b,1),(b,2)}
아이디어: 먼저 첫 번째 세트와 두 번째 세트의 데카르트 곱을 계산합니다. , 결과를 새 컬렉션으로 저장합니다.
그런 다음 새 세트를 사용하여 다음 세트로 데카르트 곱을 계산하고 마지막 세트로 데카르트 곱이 계산될 때까지 이런 방식으로 반복합니다.
예를 들어 데카르트 곱을 계산하는 데 필요한 다음 세트가 있습니다.
<?php$sets = array( array('白色','黑色','红色'), array('透气','防滑'), array('37码','38码','39码'), array('男款','女款') );?>
코드는 다음과 같습니다.
<?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('白色','黑色','红色'), array('透气','防滑'), array('37码','38码','39码'), array('男款','女款') );$result = CartesianProduct($sets); print_r($result);?>
출력:
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码女款 )
이 문서에서는 데카르트 곱을 계산하는 방법을 설명합니다. PHP 지식을 통한 여러 세트에 대한 자세한 내용은 PHP 중국어 웹사이트를 참조하세요.
관련 권장사항:
위 내용은 PHP를 통해 여러 집합의 데카르트 곱을 계산하는 방법에 대한 지식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!