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 MemCached高级缓存配置图文教程
Aug 05 PHP
php的memcached客户端memcached
Jun 14 PHP
php获取服务器信息的实现代码
Feb 04 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
php ctype函数中文翻译和示例
Mar 21 PHP
php表单敏感字符过滤类
Dec 08 PHP
在SAE上搭建最新wordpress的方法
Dec 21 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
PHP使用数组实现矩阵数学运算的方法示例
May 29 PHP
php-msf源码详解
Dec 25 PHP
Swoole 5将移除自动添加Event::wait()特性详解
Jul 10 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 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
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
js不是基础的基础
2006/12/24 Javascript
大家未必知道的Js技巧收藏
2008/04/07 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
Javascript实现的StopWatch功能示例
2017/06/13 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
js中的闭包学习心得
2018/02/06 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
理解python多线程(python多线程简明教程)
2014/06/09 Python
Python中asyncore的用法实例
2014/09/29 Python
python生成IP段的方法
2015/07/07 Python
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
Python分治法定义与应用实例详解
2017/07/28 Python
Python实现求数列和的方法示例
2018/01/12 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
美国内衣品牌:Leonisa
2016/08/14 全球购物
计算机应用专业毕业生求职信
2013/10/24 职场文书
硕士生工作推荐信
2014/03/07 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
2015年度企业工作总结
2015/05/21 职场文书
MySQL数据库完全卸载的方法
2022/03/03 MySQL