您好,欢迎访问一九零五行业门户网

经典的笛卡尔乘积代码,要如何修改它

经典的笛卡尔乘积代码,要怎么修改它?
笛卡尔乘积代码:
//////////////////////////////////////
输出:
array
(
  [0] => array
  (
  [0] => a1
  [1] => b
  [2] => c1
  [3] => d1
  [4] => e1
  )
  [1] => array
  (
  [0] => a1
  [1] => b
  [2] => c1
  [3] => d1
  [4] => e2
  )
  ...。。。

////////////////////
现在我只想要3个元素,第一个元素要有a1或a2。那段代码要怎么改?
array
(
  [0] => array
  (
  [0] => a1
  [1] => b
  [2] => c1
  )
  ......
  [1] => array
  (
  [0] => a2
  [1] => c2
  [2] => d3
  )
  ......

------解决方案--------------------
对于
$arr = array(
array('a1','a2'),
'b',
array('c1','c2'),
array('d1','d2','d3'),
array('e1','e2','e3')
//......省略其它元素(也可以是数组),
);
需先对
$arr = array(
'b',
array('c1','c2'),
array('d1','d2','d3'),
array('e1','e2','e3')
//......省略其它元素(也可以是数组),
);
求 m 取 2 的组合
$c = combination($arr, 2);
然后对组合的结果求笛卡尔积
$r = array();
foreach($c as $v)
$r = array_merge($r, descartes( array('a1','a2'), $v[0], $v[1] )); 
print_r($r);
php codearray( [0] => array ( [0] => a1 [1] => d1 [2] => e1 ) [1] => array ( [0] => a1 [1] => d1 [2] => e2 ) [2] => array ( [0] => a1 [1] => d1 [2] => e3 ) [3] => array ( [0] => a1 [1] => d2 [2] => e1 ) [4] => array ( [0] => a1 [1] => d2 [2] => e2 ) [5] => array ( [0] => a1 [1] => d2 [2] => e3 ) [6] => array ( [0] => a1 [1] => d3 [2] => e1 ) [7] => array ( [0] => a1 [1] => d3 [2] => e2 ) [8] => array ( [0] => a1 [1] => d3 [2] => e3 ) [9] => array ( [0] => a2 [1] => d1 [2] => e1 ) [10] => array ( [0] => a2 [1] => d1 [2] => e2 ) [11] => array ( [0] => a2 [1] => d1 [2] => e3 ) [12] => array ( [0] => a2 [1] => d2 [2] => e1 ) [13] => array ( [0] => a2 [1] => d2 [2] => e2 ) [14] => array ( [0] => a2 [1] => d2 [2] => e3 ) [15] => array ( [0] => a2 [1] => d3 [2] => e1 ) [16] => array ( [0] => a2 [1] => d3 [2] => e2 ) [17] => array ( [0] => a2 [1] => d3 [2] => e3 ) [18] => array ( [0] => a1 [1] => c1 [2] => e1 ) [19] => array ( [0] => a1 [1] => c1 [2] => e2 ) [20] => array ( [0] => a1 [1] => c1 [2] => e3 ) [21] => array ( [0] => a1 [1] => c2 [2] => e1 ) [22] => array ( [0] => a1 [1] => c2 [2] => e2 ) [23] => array ( [0] => a1 [1] => c2 [2] => e3 ) [24] => array ( [0] => a2 [1] => c1 [2] => e1 ) [25] => array ( [0] => a2 [1] => c1 [2] => e2 ) [26] => array ( [0] => a2 [1] => c1 [2] => e3 ) [27] => array ( [0] => a2 [1] => c2 [2] => e1 ) [28] => array ( [0] => a2 [1] => c2 [2] => e2 ) [29] => array ( [0] => a2 [1] => c2 [2] => e3 ) [30] => array ( [0] => a1 [1] => c1 [2] => d1 ) [31] => array ( [0] => a1 [1] => c1 [2] => d2 ) [32] => array ( [0] => a1 [1] => c1 [2] => d3 ) [33] => array ( [0] => a1 [1] => c2 [2] => d1 ) [34] => array ( [0] => a1 [1] => c2 [2] => d2 ) [35] => array ( [0] => a1 [1] => c2 [2] => d3 ) [36] => array ( [0] => a2 [1] => c1 [2] => d1 ) [37] => array ( [0] => a2 [1] => c1 [2] => d2 ) [38] => array ( [0] => a2 [1] => c1 [2] => d3 ) [39] => array ( [0] => a2 [1] => c2 [2] => d1 ) [40] => array ( [0] => a2 [1] => c2 [2] => d2 ) [41] => array ( [0] => a2 [1] => c2 [2] => d3 ) [42] => array ( [0] => a1 [1] => b [2] => e1 ) [43] => array ( [0] => a1 [1] => b [2] => e2 ) [44] => array ( [0] => a1 [1] => b [2] => e3 ) [45] => array ( [0] => a2 [1] => b [2] => e1 ) [46] => array ( [0] => a2 [1] => b [2] => e2 ) [47] => array ( [0] => a2 [1] => b [2] => e3 ) [48] => array ( [0] => a1 [1] => b [2] => d1 ) [49] => array ( [0] => a1 [1] => b [2] => d2 ) [50] => array ( [0] => a1 [1] => b [2] => d3 ) [51] => array ( [0] => a2 [1] => b [2] => d1 ) [52] => array ( [0] => a2 [1] => b [2] => d2 ) [53] => array ( [0] => a2 [1] => b [2] => d3 ) [54] => array ( [0] => a1 [1] => b [2] => c1 ) [55] => array ( [0] => a1 [1] => b [2] => c2 ) [56] => array ( [0] => a2 [1] => b [2] => c1 ) [57] => array ( [0] => a2 [1] => b [2] => c2 ))

其它类似信息

推荐信息