php 笛卡尔积的实现

2024-01-28 02:58
文章标签 实现 php 笛卡尔

本文主要是介绍php 笛卡尔积的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<?php
$arr = array(array(1,3,4,5),array(3,5,7,9),array(76,6,1,0));
/**
** 实现二维数组的笛卡尔积组合
** $arr 要进行笛卡尔积的二维数组
** $str 最终实现的笛卡尔积组合,可不写
** @return array
**/
function cartesian($arr,$str = array()){//去除第一个元素$first = array_shift($arr);//判断是否是第一次进行拼接if(count($str) > 1) {foreach ($str as $k => $val) {foreach ($first as $key => $value) {//最终实现的格式 1,3,76//可根据具体需求进行变更$str2[] = $val.','.$value;}}}else{foreach ($first as $key => $value) {//最终实现的格式 1,3,76//可根据具体需求进行变更$str2[] = $value;}}//递归进行拼接if(count($arr) > 0){$str2 = cartesian($arr,$str2);}//返回最终笛卡尔积return $str2;
}$cartesian_product = cartesian($arr);
print_r($cartesian_product);最终输出格式Array
([0] => 1,3,76[1] => 1,3,6[2] => 1,3,1[3] => 1,3,0[4] => 1,5,76[5] => 1,5,6[6] => 1,5,1[7] => 1,5,0[8] => 1,7,76[9] => 1,7,6[10] => 1,7,1[11] => 1,7,0[12] => 1,9,76[13] => 1,9,6[14] => 1,9,1[15] => 1,9,0[16] => 3,3,76[17] => 3,3,6[18] => 3,3,1[19] => 3,3,0[20] => 3,5,76[21] => 3,5,6[22] => 3,5,1[23] => 3,5,0[24] => 3,7,76[25] => 3,7,6[26] => 3,7,1[27] => 3,7,0[28] => 3,9,76[29] => 3,9,6[30] => 3,9,1[31] => 3,9,0[32] => 4,3,76[33] => 4,3,6[34] => 4,3,1[35] => 4,3,0[36] => 4,5,76[37] => 4,5,6[38] => 4,5,1[39] => 4,5,0[40] => 4,7,76[41] => 4,7,6[42] => 4,7,1[43] => 4,7,0[44] => 4,9,76[45] => 4,9,6[46] => 4,9,1[47] => 4,9,0[48] => 5,3,76[49] => 5,3,6[50] => 5,3,1[51] => 5,3,0[52] => 5,5,76[53] => 5,5,6[54] => 5,5,1[55] => 5,5,0[56] => 5,7,76[57] => 5,7,6[58] => 5,7,1[59] => 5,7,0[60] => 5,9,76[61] => 5,9,6[62] => 5,9,1[63] => 5,9,0
)


--------------------- 

原文:https://blog.csdn.net/free_ant/article/details/52671108 
 

这篇关于php 笛卡尔积的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/652262

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、