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 相关文章推荐
一个简单的自动发送邮件系统(三)
Oct 09 PHP
腾讯QQ php程序员面试题目整理
Jun 08 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
修改PHP的memory_limit限制的方法分享
Feb 21 PHP
PHPEXCEL 使用小记
Jan 06 PHP
有关phpmailer的详细介绍及使用方法
Jan 28 PHP
探讨如何把session存入数据库
Jun 07 PHP
PHP实现ftp上传文件示例
Aug 21 PHP
destoon文章模块调用企业会员资料的方法
Aug 22 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
PHP实现简单的模板引擎功能示例
Sep 02 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
DISCUZ 分页代码
2007/01/02 PHP
php创建多级目录代码
2008/06/05 PHP
PHP define函数的使用说明
2008/08/27 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
一些不错的js函数ajax
2008/08/20 Javascript
jquery 表单取值常用代码
2009/12/22 Javascript
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
详解Django中的form库的使用
2015/07/18 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
Python绘制股票移动均线的实例
2019/08/24 Python
学Python 3的理由和必要性
2019/11/19 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
python上selenium的弹框操作实现
2020/07/13 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
艺术学院毕业生自我评价
2014/03/02 职场文书
2014年信访工作总结
2014/11/17 职场文书