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循环输出数据库内容的代码
May 24 PHP
php preg_match_all结合str_replace替换内容中所有img
Oct 11 PHP
php 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
php中去除所有js,html,css代码
Oct 12 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 PHP
ThinkPHP控制器详解
Jul 27 PHP
PHP编程入门的基本语法知识点总结
Jan 26 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
Jul 25 PHP
php实现页面纯静态的实例代码
Jun 21 PHP
Symfony查询方法实例小结
Jun 28 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 04 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面向对象全攻略 (七) 继承性
2009/09/30 PHP
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
代码实例讲解python3的编码问题
2019/07/08 Python
浅谈Python 敏感词过滤的实现
2019/08/15 Python
Python字符串的修改方法实例
2019/12/19 Python
python实现加密的方式总结
2020/01/19 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
工程测量与监理专业应届生求职信
2013/11/27 职场文书
信息技术培训感言
2014/03/06 职场文书
教师考核评语
2014/04/28 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
2014年计生标语
2014/06/23 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
2014年底个人工作总结
2015/03/10 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server