加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜新站长网 (https://www.0418zz.com.cn/)- 管理运维、AI硬件、数据集成、云备份、负载均衡!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-07-25 09:51:48 所属栏目:PHP教程 来源:互联网
导读:本文实例讲述了php求数组全排列,元素所有组合的方法。分享给大家供大家参考,具体如下: ?php $source = array(pll,我,爱,你,嘿); sort($source); //保证初始数组是有序的 $last = count($source) - 1; //$source尾部元素下标 $x = $last; $count = 1; //组
  本文实例讲述了php求数组全排列,元素所有组合的方法。分享给大家供大家参考,具体如下:
 
  <?php
   
  $source = array('pll','我','爱','你','嘿');
   
  sort($source); //保证初始数组是有序的
   
  $last = count($source) - 1; //$source尾部元素下标
   
  $x = $last;
   
  $count = 1; //组合个数统计
   
  echo implode(',', $source), "<br>"; //输出第一种组合
   
  while (true) {
   
    $y = $x--; //相邻的两个元素
   
    if ($source[$x] < $source[$y]) { //如果前一个元素的值小于后一个元素的值
   
      $z = $last;
   
      while ($source[$x] > $source[$z]) { //从尾部开始,找到第一个大于 $x 元素的值
   
        $z--;
   
      }
   
      /* 交换 $x 和 $z 元素的值 */
   
      list($source[$x], $source[$z]) = array($source[$z], $source[$x]);
   
      /* 将 $y 之后的元素全部逆向排列 */
   
      for ($i = $last; $i > $y; $i--, $y++) {
   
        list($source[$i], $source[$y]) = array($source[$y], $source[$i]);
   
      }
   
      echo implode(',', $source), "<br>"; //输出组合
   
      $x = $last;
   
      $count++;
   
    }
   
    if ($x == 0) { //全部组合完毕
  //phpfensi.com
      break;
   
    }
   
  }
   
  echo 'Total: ', $count, "n";
   
  ?> 

(编辑:阜新站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读