关于集合的交叉积

        前几天工作中遇到一个问题要求“集合的交叉积”,

实际需求是假设两数组[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));
?>


猜你喜欢

转载自blog.csdn.net/u011000175/article/details/47189163