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
PHP程序61条面向对象分析设计的经验小结
Nov 12 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
typecho插件编写教程(四):插件挂载
May 28 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
php获取'/'传参的值简单方法
Jul 13 PHP
对laravel in 查询的使用方法详解
Oct 09 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 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 Errcode: 28 终极解决方法
2009/07/01 PHP
php下删除一篇文章生成的多个静态页面
2010/08/08 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
使用php计算排列组合的方法
2013/11/13 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
javascript innerText和innerHtml应用
2010/01/28 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
2016/08/23 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
2018/01/21 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
[00:14]护身甲盾
2019/03/06 DOTA
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
教师求职推荐信范文
2013/11/20 职场文书
自荐书封面下载
2013/11/29 职场文书
环保建议书600字
2014/05/14 职场文书
学校欢迎标语
2014/06/18 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
美容院员工规章制度
2015/08/05 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
民事调解协议书
2016/03/21 职场文书
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL
教你nginx跳转配置的四种方式
2022/07/07 Servers