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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
php之Memcache学习笔记
Jun 17 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
php实现将上传word文件转为html的方法
Jun 03 PHP
PHP编写RESTful接口
Feb 23 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
Jul 09 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 PHP
laravel实现按月或天或小时统计mysql数据的方法
Oct 09 PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
用PHP读取和编写XML DOM的实现代码
2011/02/03 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
用Javascript数组处理多个字符串的连接问题
2009/08/20 Javascript
9个JavaScript评级/投票插件
2010/01/18 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
理论讲解python多进程并发编程
2018/02/09 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
python写日志文件操作类与应用示例
2019/07/01 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
文员自我评价怎么写
2013/09/19 职场文书
5s标语大全
2014/06/23 职场文书
埃及王子观后感
2015/06/16 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript