笛卡尔积 php,PHP笛卡尔积实现算法示例

笛卡尔积 php,PHP笛卡尔积实现算法示例本文实例讲述了PHP笛卡尔积实现算法。分享给大家供大家参考,具体如下:$arr=array(array(1,3,4,5),array(3,5,7,9),array(76,6,1,0));/****实现二维数组的笛卡尔积组合**$arr要进行笛卡尔积的二维数组**$str最终实现的笛卡尔积组合,可不写**@returnarray**/functioncartesian($arr,…

大家好,又见面了,我是你们的朋友全栈君。

本文实例讲述了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计算笛卡尔积的超简单算法示例如下:

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://javaforall.net/157555.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 传感器尺寸与像素密度对相片分辨率的影响「建议收藏」

    传感器尺寸与像素密度对相片分辨率的影响「建议收藏」在人们日常生活摄影中,相机的传感器尺寸以及像素素往往决定了一幅图像的清晰度,当然,不同的镜头,不同的CMOS质量等等都会对相片的质量产生影响,今天就简单讨论讨论传感器尺寸和像素密度对图像分辨率的影响。当传感器尺寸一定时,像素越多,也就是像素密度越大,所能记录到的信息也就越多,当然,也不是没有上限的,当像素密度过大的时候,单个感光像素获取到的光线量无疑会变少,所以要提高感光度才能获取到和

    2022年6月7日
    64
  • 深度图可视化

    深度图可视化之前一直以为深度图应该是黑灰色的,不清楚为什么还有彩色的深度图,直到今天才知道原来这是深度图可视化。专门写篇博客纪念一下!灰黑色的图片人眼很难识别出其中的物体,感知深度的变化。所以才需要可视化,下面是几种颜色空间:…

    2022年4月25日
    45
  • 用户画像总结

    用户画像总结        最近在工作之余,结合自己的理解和论坛上的一些帖子,整理了份用户画像的文章,个人觉得这篇文章在宏观上很好地描述了用户画像的主要内容。(文章内的图片来源于不同帖子,权当分享,侵删)一、什么是用户画像        用户画像是指根据用户的属性、用户偏好、生活习惯、用户行为等信息而抽象出来的标签化用户模型。通俗说就是给用户打标签,而标签是通过对用户信息分析而来的高度精炼的特征标识。通过打…

    2022年7月18日
    20
  • 【《重构 改善既有代码的设计》学习笔记1】重构:第一个案例「建议收藏」

    【《重构 改善既有代码的设计》学习笔记】重构:第一个案例本篇文章的内容来自《重构 改善既有代码的设计》一书学习笔记整理笔记并且加上自己的浅显的思考总结!一、简单的例子一个影片出租店用的程序,计算每一位顾客的消费金额,并打印详单。详单打印 顾客租了哪些影片、租期多长,影片类型 、单个影片费用、总费用 。 除了费用外,还要计算顾客的积分,不同种类租片积分不同。注:影片为为三类:普通片、儿…

    2022年2月27日
    44
  • 人工智能实验猴子摘香蕉_猴子拿香蕉实验感悟

    人工智能实验猴子摘香蕉_猴子拿香蕉实验感悟题目意思:猴子定义了4个状态空手移动,推箱子,爬箱子,摘香蕉用(w,x,y,z)描述w定义了猴子位置x为1表示猴子在箱子上,0表示不在箱子上y表示箱子位置z为1表示猴子摘到香蕉(结束),为0表示没有摘到香蕉(继续搜索)目前仍有些bug随机生产猴子箱子香蕉的位置,通过BFS搜索并记录路径得出猴子的行走轨迹(因为是宽松搜,得到的就是最优解)#…

    2022年9月26日
    0
  • du查询文件夹占用空间,自动删除超过N天的文件「建议收藏」

    du查询文件夹占用空间,自动删除超过N天的文件

    2022年2月12日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号