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 相关文章推荐
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
May 07 PHP
php中模拟POST传递数据的两种方法分享
Sep 16 PHP
php的一个简单加密解密代码
Jan 14 PHP
PHP简单选择排序算法实例
Jan 26 PHP
php抽象类使用要点与注意事项分析
Feb 09 PHP
php对关联数组循环遍历的实现方法
Mar 13 PHP
php 中的closure用法详解
Jun 12 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
PHP常用函数之格式化时间操作示例
Oct 21 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
PHP数组访问常用方法解析
Sep 05 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
PHP安全配置
2006/10/09 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
javascript继承机制实例详解
2014/11/20 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
Python使用新浪微博API发送微博的例子
2014/04/10 Python
python中常用检测字符串相关函数汇总
2015/04/15 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
flask 实现token机制的示例代码
2019/11/07 Python
Python 定义只读属性的实现方式
2020/03/05 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
Python tkinter实现日期选择器
2021/02/22 Python
python re模块常见用法例举
2021/03/01 Python
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
建筑施工安全生产责任书
2014/07/22 职场文书
2014年超市工作总结
2014/11/19 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
三好学生事迹材料
2014/12/24 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL