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或asp创建网页桌面快捷方式的代码
Mar 23 PHP
discuz的php防止sql注入函数
Jan 17 PHP
php中常用字符串处理代码片段整理
Nov 07 PHP
PHP中的错误处理、异常处理机制分析
May 07 PHP
php调用nginx的mod_zip模块打包ZIP文件
Jun 11 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
Mar 19 PHP
php中文验证码实现方法
Jun 18 PHP
PHP处理二进制数据的实现方法
Jun 13 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 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
Yii实现简单分页的方法
2016/04/29 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
javascript offsetX与layerX区别
2010/03/12 Javascript
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
JSON格式化输出
2014/11/10 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
对python中的高效迭代器函数详解
2018/10/18 Python
python实现坦克大战
2020/04/24 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
仓库管理专业个人的自我评价
2013/12/30 职场文书
生物学学生自我评价
2014/01/17 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
大学毕业感言50字
2014/02/07 职场文书
公共场所禁烟标语
2014/06/25 职场文书
幸福中国演讲稿
2014/09/12 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL
Java使用HttpClient实现文件下载
2022/08/14 Java/Android