PHP笛卡尔积实现算法示例
作者:free_ant 发布时间:2023-09-08 19:58:09
本文实例讲述了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
)
小编这里参考前面一篇《JavaScript笛卡尔积超简单实现算法》,给出一个php计算笛卡尔积的超简单算法示例如下:
<?php
function cartesian($arr1,$arr2){
$relarr = array();
foreach($arr1 as $v1){
foreach($arr2 as $v2){
array_push($relarr,$v1.",".$v2);
}
}
return $relarr;
}
//用法示例
$a = array('1','2','3');
$b = array('a','b',c);
print_r(cartesian($a,$b));
?>
运行结果:
Array
(
[0] => 1,a
[1] => 1,b
[2] => 1,c
[3] => 2,a
[4] => 2,b
[5] => 2,c
[6] => 3,a
[7] => 3,b
[8] => 3,c
)
希望本文所述对大家PHP程序设计有所帮助。
来源:https://blog.csdn.net/free_ant/article/details/52671108


猜你喜欢
- 一、 前期准备1. 设置GPU如果设备上支持GPU就使用GPU,否则使用CPUimport torchimport torch.nn as
- Python类的继承在OOP(ObjectOrientedProgramming)程序设计中,当我们定义一个class的时候,可以从某个现有
- 前言虽然现在文件上传下载工具多如牛毛,比如http、ftp、sftp、scp等方案都可以用于文件传输,但都是需要安装服务器甚至客户端。有一种
- 前言简单学习过网络爬虫,只是之前都是照着书上做并发,大概能理解,却还是无法自己用到自己项目中,这里自己研究实现一个网页嗅探HTML5播放控件
- 【原文地址】 Fixes for Common VS 2008 and .NET 3.5 Beta2 Issu
- 本文实例讲述了Python处理XML格式数据的方法。分享给大家供大家参考,具体如下:这里的操作是基于Python3平台。在使用Python处
- 1.引言效果图:ISBN查询工具通常用于图书管理、图书销售、图书收集和阅读等场景。以下是一些具体的应用场景:图书管理系统:ISBN查询工具可
- 最近碰到一个mysql5数据库的问题。就是一个标准的servlet/tomcat网络应用,后台使用mysql数据库。问题是待机一晚上后,第二
- PDOStatement::fetchAllPDOStatement::fetchAll — 返回一个包含结果集中所有行的数组(PHP 5
- 下面通过实例代码给大家介绍python 中pyqt5 树节点点击实现多窗口切换问题,具体代码如下所示:# coding=utf-8impor
- 背景最近本菜鸡在学习 python GUI,从 tkinter 入门,想先做个小软件练习一下思来想去,决定做一个 计算器设计思路首先,导入我
- 在写一些很小的机器学习项目的时候,我们往往希望training, testing和inference能共用一个入口main,但是不同的功能使
- 下表列出了所有Python语言支持的赋值运算符。假设变量a持有10和变量b持有20,则: 例如:试试下面的例子就明白了所有在Pyt
- 一、前言这几天宅在家里网上冲浪,无意间看到了一个比较有趣的项目,就是使用 Python 语言实现对视频中的人物的眨眼进行计数并描绘在图表中。
- pandas是什么?是它吗?。。。。很显然pandas没有这个家伙那么可爱。。。。我们来看看pandas的官网是怎么来定义自己的:panda
- 0x00 前言eval是Python用于执行python表达式的一个内置函数,使用eval,可以很方便的将字符串动态执行。比如下列代码:&g
- 目录先明确几点赋值浅拷贝深拷贝总结先明确几点不可变类型:该数据类型对象所指定内存中的值不可以被改变。(1)、在改变某个对象的值时,由于其内存
- 本文实例讲述了python飞机大战pygame碰撞检测实现方法。分享给大家供大家参考,具体如下:目标了解碰撞检测方法碰撞实现01. 了解碰撞
- 本文实例讲述了Python简单I/O操作。分享给大家供大家参考,具体如下:文件:poem = '''hellowor
- 本文实例讲述了Python编程中的反模式。分享给大家供大家参考。具体分析如下:Python是时下最热门的编程语言之一了。简洁而富有表达力的语