PHP基于自定义函数生成笛卡尔积的方法示例
这篇文章主要介绍了PHP基于自定义函数生成笛卡尔积的方法,结合具体实例形式分析了php使用数组运算模拟集合实现笛卡尔积运算的相关操作技巧,需要的朋友可以参考下。
本文实例讲述了PHP基于自定义函数生成笛卡尔积的方法,分享给大家供大家参考,具体如下:
- <?php
- $color = array('red', 'green');
- $size = array(39, 40, 41);
- $local = array('beijing', 'shanghai');
- echo "<pre>";
- print_r(combineDika($color, $size, $local));
- /**
- * 所有数组的笛卡尔积
- *
- * @param unknown_type $data
- */
- function combineDika() {
- $data = func_get_args();
- $cnt = count($data);
- $result = array();
- foreach($data[0] as $item) {
- $result[] = array($item);
- }
- for($i = 1; $i < $cnt; $i++) {
- $result = combineArray($result,$data[$i]);
- }
- return $result;
- }
- /**
- * 两个数组的笛卡尔积
- *
- * @param unknown_type $arr1
- * @param unknown_type $arr2
- */
- function combineArray($arr1,$arr2) {
- $result = array();
- foreach ($arr1 as $item1) {
- foreach ($arr2 as $item2) {
- $temp = $item1;
- $temp[] = $item2;
- $result[] = $temp;
- }
- }
- return $result;
- }
- ?>
运行结果:
- Array
- (
- [0] => Array
- (
- [0] => red
- [1] => 39
- [2] => beijing
- )
- [1] => Array
- (
- [0] => red
- [1] => 39
- [2] => shanghai
- )
- [2] => Array
- (
- [0] => red
- [1] => 40
- [2] => beijing
- )
- [3] => Array
- (
- [0] => red
- [1] => 40
- [2] => shanghai
- )
- [4] => Array
- (
- [0] => red
- [1] => 41
- [2] => beijing
- )
- [5] => Array
- (
- [0] => red
- [1] => 41
- [2] => shanghai
- )
- [6] => Array
- (
- [0] => green
- [1] => 39
- [2] => beijing
- )
- [7] => Array
- (
- [0] => green
- [1] => 39
- [2] => shanghai
- )
- [8] => Array
- (
- [0] => green
- [1] => 40
- [2] => beijing
- )
- [9] => Array
- (
- [0] => green
- [1] => 40
- [2] => shanghai
- )
- [10] => Array
- (
- [0] => green
- [1] => 41
- [2] => beijing
- )
- [11] => Array
- (
- [0] => green
- [1] => 41
- [2] => shanghai
- )
- )