前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笛卡尔积 php,PHP笛卡尔积实现算法示例

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

作者头像
全栈程序员站长
发布2022-09-14 15:03:33
7490
发布2022-09-14 15:03:33
举报
文章被收录于专栏:全栈程序员必看

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

本文实例讲述了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 =>

foreach (first as key =>

//最终实现的格式 1,3,76

//可根据具体需求进行变更

str2[] = val.’,’.

}

}

}else{

foreach (first as key =>

//最终实现的格式 1,3,76

//可根据具体需求进行变更

str2[] = value;

}

}

//递归进行拼接

if(count($arr) > 0){

str2 = cartesian(arr,

}

//返回最终笛卡尔积

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.”,”.

}

}

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年7月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档