php求数组全排列,元素所有组合的方法总结


Posted in PHP onMarch 14, 2017

本文实例讲述了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 17 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
PHP内核探索:变量概述
Jan 30 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
PHP微信支付实例解析
Jul 22 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
Sep 13 PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 PHP
如何修改yii2.0自带的user表为其它的表
Aug 01 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
PHP实现的函数重载功能示例
Aug 03 PHP
PHP PDOStatement::fetchObject讲解
Feb 01 PHP
php输出控制函数和输出函数生成静态页面
Jun 27 PHP
PHP输出多个元素的排列或组合的方法
Mar 14 #PHP
Linux下快速搭建php开发环境
Mar 13 #PHP
php创建图像具体步骤
Mar 13 #PHP
PHP+MYSQL实现读写分离简单实战
Mar 13 #PHP
PHP计算近1年的所有月份
Mar 13 #PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 #PHP
PHP控制反转(IOC)和依赖注入(DI)
Mar 13 #PHP
You might like
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
python条件和循环的使用方法
2013/11/01 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
matlab中实现矩阵删除一行或一列的方法
2018/04/04 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
深入理解Python 多线程
2020/06/16 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
大学生校园创业计划书
2014/02/08 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
库房管理员岗位职责
2014/03/09 职场文书
酒店辞职书范文
2015/02/26 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
HTML+VUE分页实现炫酷物联网大屏功能
2021/05/27 Vue.js
Redis RDB技术底层原理详解
2021/09/04 Redis