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 相关文章推荐
简单示例AJAX结合PHP代码实现登录效果代码
Jul 25 PHP
php实现获取文件mime类型的方法
Feb 11 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
如何使用GDB调试PHP程序
Dec 08 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
浅析PHP开发规范
Feb 05 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 PHP
php连接mysql数据库最简单的实现方法
Sep 24 PHP
PHP时间相关常用函数用法示例
Jun 03 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
无线电广播的开始
2002/01/30 无线电
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php文件操作实例代码
2012/05/10 PHP
php实现图片添加水印功能
2014/02/13 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
python实现获取序列中最小的几个元素
2014/09/25 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
最新结婚典礼主持词
2014/03/14 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
小学校本培训方案
2014/06/06 职场文书
销售竞赛活动方案
2014/08/23 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
股东授权委托书
2014/10/15 职场文书
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers