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之第六天
Oct 09 PHP
Smarty结合Ajax实现无刷新留言本实例
Jan 02 PHP
php.ini 配置文件的深入解析
Jun 17 PHP
ThinkPHP框架实现session跨域问题的解决方法
Jul 01 PHP
PHP实现文件上传和多文件上传
Dec 24 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
Yii2框架中日志的使用方法分析
May 22 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 PHP
PHP一个简单的无需刷新爬虫
Jan 05 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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/07/01 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
Python中os.path用法分析
2015/01/15 Python
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
python实现机器学习之元线性回归
2018/09/06 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
详解python:time模块用法
2019/03/25 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
Python模块相关知识点小结
2020/03/09 Python
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
英格兰足协官方商店:England Store
2019/07/12 全球购物
外贸专业求职信
2014/03/09 职场文书
初婚未育证明样本
2014/10/24 职场文书
表扬信格式模板
2015/05/05 职场文书
奖金申请报告模板
2015/05/15 职场文书
换届选举主持词
2015/07/03 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
外出考察学习心得体会
2016/01/18 职场文书
一篇带你入门Java垃圾回收器
2021/06/16 Java/Android
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis