时间:2021-05-26
实例如下:
<?php$arr = array('a','b','c','d');$result = array();$t = getCombinationToString($arr, 1);print_r($t);$t = getCombinationToString($arr, 2);$t2 = getunique($t);print_r($t2);$t = getCombinationToString($arr, 3);$t2 = getunique($t);print_r($t2);$t = getCombinationToString($arr, 4);$t2 = getunique($t);print_r($t2);function getunique($t){ $t2 = array(); //print_r($t); for($i=0;$i<count($t);$i++){ $count_list = array_count_values($t[$i]); $flag = 1; foreach($count_list as $ck=>$cv){ if($cv>1){ $flag = 0; break; } } if($flag){ sort($t[$i]); $flag2 = 1; if($t2){ foreach($t2 as $t2k=>$t2v){ if($t[$i]==$t2v){ $flag2 = 0; break; } } } if($flag2){ $t2[] = $t[$i]; } } } return $t2;}function getCombinationToString($arr, $m) { if ($m ==1) { return $arr; } $result = array(); $tmpArr = $arr; unset($tmpArr[0]); for($i=0;$i<count($arr);$i++) { $s = $arr[$i]; $ret = getCombinationToString(array_values($tmpArr), ($m-1), $result); foreach($ret as $row) { //$result[] = $s . $row; $temp = array(); $temp[] = $s; if(is_array($row)){ $temp = array_merge($temp,$row); }else{ $temp[] = $row; } sort($temp); $result[] = $temp; } } return $result;}?>共15种排列结果。
以上这篇PHP输出多个元素的排列或组合的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
面试或笔试中,多次遇到以下4个关于排列组合的手撕算法,这里做个笔记,方法日后查阅:1.无重复元素的数组,求全排列;2.有重复元素的数组,求全排列;3.无重复元素
本文实例讲述了php求数组全排列,元素所有组合的方法总结。分享给大家供大家参考,具体如下:$source[$z]){//从尾部开始,找到第一个大于$x元素的值$
本文实例讲述了php求数组全排列,元素所有组合的方法。分享给大家供大家参考,具体如下:$source[$z]){//从尾部开始,找到第一个大于$x元素的值$z-
排列组合的概念排列:从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(Arrangement)。组合:从m
本文实例讲述了JS实现二维数组元素的排列组合运算。分享给大家供大家参考,具体如下:用js实现二维数组里面的元素排列组合一个小demo;源码:JS数组排列组合运算