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脚本的10个技巧(7)
Oct 09 PHP
PHPMyAdmin 快速配置方法
May 11 PHP
PHP中extract()函数的定义和用法
Aug 17 PHP
解析php session_set_save_handler 函数的用法(mysql)
Jun 29 PHP
PHP中实现crontab代码分享
Mar 26 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
PHP中的多种加密技术及代码示例解析
Oct 20 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 PHP
如何直接访问php实例对象中的private属性详解
Oct 12 PHP
PHP实现模拟http请求的方法分析
Dec 20 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
基于php权限分配的实现代码
2013/04/28 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
微信小程序云开发详细教程
2019/05/16 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
Python translator使用实例
2008/09/06 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
python编写微信远程控制电脑的程序
2018/01/05 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
解释下面关于J2EE的名词
2013/11/15 面试题
产品设计开发计划书
2014/05/07 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
校本培训个人总结
2015/02/28 职场文书
教师求职简历自我评价
2015/03/10 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书