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 相关文章推荐
使用 MySQL 开始 PHP 会话
Dec 21 PHP
php URL跳转代码 减少外链
Jun 25 PHP
php array_filter除去数组中的空字符元素
Jun 21 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
php实现简单的语法高亮函数实例分析
Apr 27 PHP
Laravel多用户认证系统示例详解
Mar 13 PHP
PHP7 echo和print语句实例用法
Feb 15 PHP
php分享朋友圈的实现代码
Feb 18 PHP
Yii框架响应组件用法实例分析
Sep 04 PHP
PHP7 安装event扩展的实现方法
Oct 08 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 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
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
全面分析Python的优点和缺点
2018/02/07 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
使用Python的turtle模块画国旗
2019/09/24 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
Python装饰器结合递归原理解析
2020/07/02 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
一些Unix笔试题和面试题
2012/09/25 面试题
北大青鸟学生求职信
2013/09/24 职场文书
优秀毕业生求职推荐信范文
2013/11/21 职场文书
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
教师一岗双责责任书
2014/04/16 职场文书
建筑安全标语
2014/06/07 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
小学教师节活动总结
2015/03/20 职场文书
服务器间如何实现文件共享
2022/05/20 Servers
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python