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 相关文章推荐
风格模板初级不完全修改教程
Oct 09 PHP
php.ini中的php-5.2.0配置指令详解
Mar 27 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
php ckeditor上传图片文件名乱码解决方法
Nov 15 PHP
Php无限级栏目分类读取的实现代码
Feb 19 PHP
php通过exif_read_data函数获取图片的exif信息
May 21 PHP
yii权限控制的方法(三种方法)
Dec 28 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
Dec 14 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 PHP
php+layui数据表格实现数据分页渲染代码
Oct 26 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函数实现判断是否移动端访问
2015/03/03 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
ajax异步请求详解
2017/01/06 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
angular2中使用第三方js库的实例
2018/02/26 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
JS实现分页导航效果
2020/02/19 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
Python三元运算实现方法
2015/01/12 Python
使用Django和Python创建Json response的方法
2018/03/26 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
团日活动总结怎么写
2014/06/25 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
2015年暑假生活总结
2015/07/13 职场文书
60句有关成长的名言
2019/09/04 职场文书
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL