当前位置:首页 > 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; 
  21. } 

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

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

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

  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; 
  14. } 

输出结果如下所示:

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

Tags: PHP笛卡尔积运算

分享到: