当前位置:首页 > PHP教程 > php数组 > 列表

PHP实现数组的笛卡尔积运算示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-23 10:52:38 浏览: 评论:0 

这篇文章主要介绍了PHP实现数组的笛卡尔积运算,结合实例形式分析了php数组的笛卡尔积运算相关实现与使用技巧,需要的朋友可以参考下。

本文实例讲述了PHP实现数组的笛卡尔积运算,分享给大家供大家参考,具体如下:

数组的笛卡尔积在实际中还是挺有用处的,比如计算商品的规格时就经常用到,下面写一种实现方式,如下代码

  1. $arr = array
  2.   array(2), 
  3.   array(6,7), 
  4.   array('a','b','c'
  5. ); 
  6. function dikaer($arr){ 
  7.  $arr1 = array(); 
  8.  $result = array_shift($arr); 
  9.  while($arr2 = array_shift($arr)){ 
  10.   $arr1 = $result
  11.   $result = array(); 
  12.   foreach($arr1 as $v){ 
  13.    foreach($arr2 as $v2){ 
  14.     if(!is_array($v))$v = array($v); 
  15.     if(!is_array($v2))$v2 = array($v2); 
  16.     $result[] = array_merge_recursive($v,$v2); 
  17.    } 
  18.   } 
  19.  } 
  20.  return $result

以上例子输出的结果如下:

  1. Array 
  2.   [0] => Array 
  3.     ( 
  4.       [0] => 2 
  5.       [1] => 6 
  6.       [2] => a 
  7.     ) 
  8.   [1] => Array 
  9.     ( 
  10.       [0] => 2 
  11.       [1] => 6 
  12.       [2] => b 
  13.     ) 
  14.   [2] => Array 
  15.     ( 
  16.       [0] => 2 
  17.       [1] => 6 
  18.       [2] => c 
  19.     ) 
  20.   [3] => Array 
  21.     ( 
  22.       [0] => 2 
  23.       [1] => 7 
  24.       [2] => a 
  25.     ) 
  26.   [4] => Array 
  27.     ( 
  28.       [0] => 2 
  29.       [1] => 7 
  30.       [2] => b 
  31.     ) 
  32.   [5] => Array 
  33.     ( 
  34.       [0] => 2 
  35.       [1] => 7 
  36.       [2] => c 
  37.     ) 

如果需要输出字符串形式的结果可以把代码改成这样

  1. function dikaer($arr){ 
  2.  $arr1 = array(); 
  3.  $result = array_shift($arr); 
  4.  while($arr2 = array_shift($arr)){ 
  5.   $arr1 = $result
  6.   $result = array(); 
  7.   foreach($arr1 as $v){ 
  8.    foreach($arr2 as $v2){ 
  9.     $result[] = $v.','.$v2
  10.    } 
  11.   } 
  12.  } 
  13.  return $result

输出结果如下所示:

  1. Array 
  2.   [0] => 2,6,a 
  3.   [1] => 2,6,b 
  4.   [2] => 2,6,c 
  5.   [3] => 2,7,a 
  6.   [4] => 2,7,b 
  7.   [5] => 2,7,c 
  8. )

Tags: PHP笛卡尔积运算

分享到: