www.adminn.cn
站长正能量分享网!

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

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

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

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php求数组全排列,元素所有组合的方法》
文章链接:https://www.adminn.cn/news/7336.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

2次开发,学习研究使用!扫码支付后联系QQ677123发货!

支付宝扫一扫打赏