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


Posted in PHP onMay 05, 2016

本文实例讲述了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) { //全部组合完毕
    break;
  }
}
echo 'Total: ', $count, "\n";
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
编译问题
Oct 09 PHP
PHP开发中常用的三个表单验证函数使用小结
Mar 03 PHP
一个PHP缓存类代码(附详细说明)
Jun 09 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
Mar 12 PHP
PHP扩展开发入门教程
Feb 26 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
May 31 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
Dec 14 PHP
php遍历解析xml字符串的方法
May 05 #PHP
Joomla调用系统自带编辑器的实现方法
May 05 #PHP
yii2超好用的日期组件和时间组件
May 05 #PHP
Joomla语言翻译类Jtext用法分析
May 05 #PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 #PHP
joomla实现注册用户添加新字段的方法
May 05 #PHP
Joomla数据库操作之JFactory::getDBO用法
May 05 #PHP
You might like
Terran建筑一览
2020/03/14 星际争霸
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
php中使用base HTTP验证的方法
2015/04/20 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
DIV菜单层实现代码
2010/11/19 Javascript
JavaScript中的作用域链和闭包
2012/06/30 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
wxPython的安装图文教程(Windows)
2017/12/28 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
python实现汽车管理系统
2018/11/30 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
Python输出指定字符串的方法
2020/02/06 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
商场端午节活动方案
2014/01/29 职场文书
单位委托书范本
2014/04/04 职场文书
质检员岗位职责
2015/02/03 职场文书
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL
Python实现照片卡通化
2021/12/06 Python