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读取IMAP邮件
Oct 09 PHP
php 验证码实例代码
Jun 01 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
php PDO异常处理详解
Nov 20 PHP
php中strtotime函数性能分析
Nov 20 PHP
PHP验证码类ValidateCode解析
Jan 07 PHP
基于php双引号中访问数组元素报错的解决方法
Feb 01 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
Apr 20 PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 PHP
PHP+redis实现的购物车单例类示例
Feb 02 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 PHP
PHP7 整型处理机制修改
Mar 09 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
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
js图片预加载示例
2014/04/30 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
python计算最大优先级队列实例
2013/12/18 Python
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
Python实现批量修改文件名实例
2015/07/08 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
Python用for循环实现九九乘法表
2018/05/31 Python
Python中的list与tuple集合区别解析
2019/10/12 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
英国男女奢华内衣和泳装购物网站:Figleaves
2017/01/28 全球购物
资深财务管理人员自我评价
2013/09/22 职场文书
九年级语文教学反思
2014/02/04 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
继承权公证书
2014/04/09 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
个人年底工作总结
2015/03/10 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
Vue全局事件总线你了解吗
2022/02/24 Vue.js