前几天工作中遇到一个问题要求“集合的交叉积”,
实际需求是假设两数组[1, 2] ,[5, 6] 求得结果[[1, 5], [2, 5], [1, 6], [2, 6] ]
这让我突然想到了数据的连表查询不是也类似吗, 于是按照其相关模型,考虑了好半天终于写了一个没怎么优化的算法(哎数据结构与算法学得太烂)先记下来
<?php
$arr = [
['A', 'B', 'C', 'D'],
['a', 'b', 'c', 'd'],
];
function makeinter($arr){
$inter = array_shift($arr);
while(count($arr) > 0){
$temp = array();
$curr = array_shift($arr);
foreach($curr as $k => $v){
foreach($inter as $key => $var){
$temp[] = is_array($var) ? array_merge($var, (array)$v) : [$var, $v];
}
}
$inter = $temp;
}
return $inter;
}
print_r(makeinter($arr));
?>