查看: 1433|回复: 0

[PHP实例] PHP输出多个元素的排列或组合的方法

发表于 2018-2-6 08:00:01

实例如下:

  1. <?php
  2. $arr = array('a','b','c','d');
  3. $result = array();
  4. $t = getCombinationToString($arr, 1);
  5. print_r($t);
  6. $t = getCombinationToString($arr, 2);
  7. $t2 = getunique($t);
  8. print_r($t2);
  9. $t = getCombinationToString($arr, 3);
  10. $t2 = getunique($t);
  11. print_r($t2);
  12. $t = getCombinationToString($arr, 4);
  13. $t2 = getunique($t);
  14. print_r($t2);
  15. function getunique($t){
  16. $t2 = array();
  17. //print_r($t);
  18. for($i=0;$i<count($t);$i++){
  19. $count_list = array_count_values($t[$i]);
  20. $flag = 1;
  21. foreach($count_list as $ck=>$cv){
  22. if($cv>1){
  23. $flag = 0;
  24. break;
  25. }
  26. }
  27. if($flag){
  28. sort($t[$i]);
  29. $flag2 = 1;
  30. if($t2){
  31. foreach($t2 as $t2k=>$t2v){
  32. if($t[$i]==$t2v){
  33. $flag2 = 0;
  34. break;
  35. }
  36. }
  37. }
  38. if($flag2){
  39. $t2[] = $t[$i];
  40. }
  41. }
  42. }
  43. return $t2;
  44. }
  45. function getCombinationToString($arr, $m) {
  46. if ($m ==1) {
  47. return $arr;
  48. }
  49. $result = array();
  50. $tmpArr = $arr;
  51. unset($tmpArr[0]);
  52. for($i=0;$i<count($arr);$i++) {
  53. $s = $arr[$i];
  54. $ret = getCombinationToString(array_values($tmpArr), ($m-1), $result);
  55. foreach($ret as $row) {
  56. //$result[] = $s . $row;
  57. $temp = array();
  58. $temp[] = $s;
  59. if(is_array($row)){
  60. $temp = array_merge($temp,$row);
  61. }else{
  62. $temp[] = $row;
  63. }
  64. sort($temp);
  65. $result[] = $temp;
  66. }
  67. }
  68. return $result;
  69. }
  70. ?>
复制代码

共15种排列结果。

以上这篇PHP输出多个元素的排列或组合的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持程序员之家。

您可能感兴趣的文章:

  • 组合算法的PHP解答方法
  • php全排列递归算法代码
  • 使用php计算排列组合的方法
  • php生成数组的使用示例 php全组合算法
  • php通过排列组合实现1到9数字相加都等于20的方法
  • php求数组全排列,元素所有组合的方法
  • php求数组全排列,元素所有组合的方法总结
  • 浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
  • PHP实现的简单排列组合算法应用示例


回复

使用道具 举报