当前位置:首页 > PHP教程 > php数组 > 列表

php求数组全排列,元素所有组合的方法

发布:smiling 来源: PHP粉丝网  添加日期:2019-07-28 15:18:29 浏览: 评论:0 

本文实例讲述了php求数组全排列,元素所有组合的方法。分享给大家供大家参考,具体如下:

  1. <?php 
  2.  
  3. $source = array('pll','我','爱','你','嘿'); 
  4.  
  5. sort($source); //保证初始数组是有序的 
  6.  
  7. $last = count($source) - 1; //$source尾部元素下标 
  8.  
  9. $x = $last
  10.  
  11. $count = 1; //组合个数统计 
  12.  
  13. echo implode(','$source), "<br>"//输出第一种组合 
  14.  
  15. while (true) { 
  16.  
  17.   $y = $x--; //相邻的两个元素 
  18.  
  19.   if ($source[$x] < $source[$y]) { //如果前一个元素的值小于后一个元素的值 
  20.  
  21.     $z = $last
  22.  
  23.     while ($source[$x] > $source[$z]) { //从尾部开始,找到第一个大于 $x 元素的值 
  24.  
  25.       $z--; 
  26.  
  27.     } 
  28.  
  29.     /* 交换 $x 和 $z 元素的值 */ 
  30.  
  31.     list($source[$x], $source[$z]) = array($source[$z], $source[$x]); 
  32.  
  33.     /* 将 $y 之后的元素全部逆向排列 */ 
  34.  
  35.     for ($i = $last$i > $y$i--, $y++) { 
  36.  
  37.       list($source[$i], $source[$y]) = array($source[$y], $source[$i]); 
  38.  
  39.     } 
  40.  
  41.     echo implode(','$source), "<br>"//输出组合 
  42.  
  43.     $x = $last
  44.  
  45.     $count++; 
  46.  
  47.   } 
  48.  
  49.   if ($x == 0) { //全部组合完毕 
  50. //phpfensi.com 
  51.     break
  52.  
  53.   } 
  54.  
  55.  
  56. echo 'Total: '$count"\n"
  57.  
  58. ?> 

Tags: php数组排列 php元素组合

分享到: