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的安全策略
Oct 09 PHP
php之对抗Web扫描器的脚本技巧
Oct 01 PHP
PHP has encountered an Access Violation at 7C94BD02解决方法
Aug 24 PHP
php checkbox 取值详细说明
Aug 19 PHP
基于PHP文件操作的详解
Jun 05 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
php简单实现MVC
Feb 05 PHP
php检测文本的编码
Jul 26 PHP
微信红包随机生成算法php版
Jul 21 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 PHP
PHP7 整型处理机制修改
Mar 09 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用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
javascript闭包的使用之按钮切换功能
2018/08/30 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python 捕获shell脚本的输出结果实例
2017/01/04 Python
python difflib模块示例讲解
2017/09/13 Python
浅谈Django REST Framework限速
2017/12/12 Python
python脚本实现验证码识别
2018/06/07 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
python通过http下载文件的方法详解
2019/07/26 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
Python内置加密模块用法解析
2019/11/25 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
python音频处理的示例详解
2020/12/23 Python
暑假实习求职信范文
2013/09/22 职场文书
企业给企业的表扬信
2014/01/13 职场文书
投标担保书范文
2014/04/02 职场文书
学生会辞职信
2015/03/02 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis
JS实现简单九宫格抽奖
2022/06/28 Javascript
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技