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


Posted in PHP onDecember 15, 2017

本文实例讲述了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
)

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP中uploaded_files函数使用方法详解
Mar 09 PHP
php.ini中date.timezone设置分析
Jul 29 PHP
PHP 第二节 数据类型之数组
Apr 28 PHP
解析php安全性问题中的:Null 字符问题
Jun 21 PHP
微信公众平台开发之配置与请求
Aug 26 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
注意!PHP 7中不要做的10件事
Sep 18 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 PHP
PhpStorm配置Xdebug调试的方法步骤
Feb 02 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 PHP
laravel异步监控定时调度器实例详解
Jun 21 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
Oct 10 PHP
PHP中OpenSSL加密问题整理
Dec 14 #PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
Dec 14 #PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 #PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 #PHP
Laravel使用消息队列需要注意的一些问题
Dec 13 #PHP
实例分析PHP中PHPMailer发邮件
Dec 13 #PHP
使用XHProf查找PHP性能瓶颈的实例
Dec 13 #PHP
You might like
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
php中{}大括号是什么意思
2013/12/01 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
浅析Node.js查找字符串功能
2014/09/03 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
python递归函数绘制分形树的方法
2018/06/22 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
Linux Interview Questions For software testers
2012/06/02 面试题
迟到检讨书1000字
2014/01/15 职场文书
大学生个人求职信
2014/06/02 职场文书
心得体会的写法
2014/09/05 职场文书
借款民事起诉状范文
2015/05/19 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers