php如何实现数组的笛卡尔积

lexus 阅读:13 2023-03-17 12:59:14 评论:0

php实现数组的笛卡尔积的方法:1、创建一个PHP示例文件;2、定义一个数组;3、通过“function dikaer($arr){...}”实现数组的笛卡尔积运算即可。

php如何实现数组的笛卡尔积

本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。

php怎么实现数组的笛卡尔积?

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

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

$arr = array( 
  array(2), 
  array(6,7), 
  array('a','b','c') 
); 
function dikaer($arr){ 
 $arr1 = array(); 
 $result = array_shift($arr); 
 while($arr2 = array_shift($arr)){ 
  $arr1 = $result; 
  $result = array(); 
  foreach($arr1 as $v){ 
   foreach($arr2 as $v2){ 
    if(!is_array($v))$v = array($v); 
    if(!is_array($v2))$v2 = array($v2); 
    $result[] = array_merge_recursive($v,$v2); 
   } 
  } 
 } 
 return $result; 
}

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

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

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

function dikaer($arr){ 
 $arr1 = array(); 
 $result = array_shift($arr); 
 while($arr2 = array_shift($arr)){ 
  $arr1 = $result; 
  $result = array(); 
  foreach($arr1 as $v){ 
   foreach($arr2 as $v2){ 
    $result[] = $v.','.$v2; 
   } 
  } 
 } 
 return $result; 
}

输出结果如下所示:

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

本文参考链接:https://www.yisu.com/zixun/621268.html
标签:PHP
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

搜索
关注我们

一个IT知识分享的公众号