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 相关文章推荐
main.php
Dec 09 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
php cli配置文件问题分析
Oct 15 PHP
PHP获取昨天、今天及明天日期的方法
Feb 03 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
Apr 02 PHP
Linux系统中为php添加pcntl扩展
Aug 28 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
Jun 09 PHP
PHP PDOStatement::fetchColumn讲解
Jan 31 PHP
PHP lcfirst()函数定义与用法
Mar 08 PHP
PHP类的自动加载与命名空间用法实例分析
Jun 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
生成缩略图
2006/10/09 PHP
php入门教程 精简版
2009/12/13 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
详解jquery中$.ajax方法提交表单
2014/11/03 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
JQuery 的跨域方法推荐_可跨任何网站
2016/05/18 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
详解jquery和vue对比
2019/04/16 jQuery
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
Python各种扩展名区别点整理
2020/02/27 Python
基于python图像处理API的使用示例
2020/04/03 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
学生发电厂实习自我鉴定
2013/09/22 职场文书
绿色城市实施方案
2014/03/19 职场文书
计划生育标语
2014/06/23 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书