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 远程关机实现代码
Nov 10 PHP
MySQL 日期时间函数常用总结
Jun 12 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
Jun 21 PHP
destoon各类调用汇总
Jun 20 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
Jun 23 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
laravel实现批量更新多条记录的方法示例
Oct 22 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 PHP
php输出控制函数和输出函数生成静态页面
Jun 27 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
常见的5个PHP编码小陋习以及优化实例讲解
Feb 27 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 download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
jquery 可排列的表实现代码
2009/11/13 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
javascript表单正则应用
2017/02/04 Javascript
React简单介绍
2017/05/24 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
python支持断点续传的多线程下载示例
2014/01/16 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
python实现视频分帧效果
2019/05/31 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
企业环保标语
2014/06/10 职场文书
立志成才演讲稿
2014/09/04 职场文书
党员群众路线学习心得体会
2014/11/04 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
勤俭节约主题班会
2015/08/13 职场文书
2016年春季开学典礼新闻稿
2015/11/25 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
java实现对Hadoop的操作
2021/07/01 Java/Android