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 相关文章推荐
全文搜索和替换
Oct 09 PHP
如何隐藏你的.php文件
Jan 04 PHP
PHP Stream_*系列函数
Aug 01 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
PHP加Nginx实现动态裁剪图片方案
Mar 10 PHP
图解找出PHP配置文件php.ini的路径的方法
Aug 20 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
Yii2.0预定义的别名功能小结
Jul 04 PHP
PHP页面输出时js设置input框的选中值
Sep 30 PHP
Yii2配置Nginx伪静态的方法
May 05 PHP
详解提高使用Java反射的效率方法
Apr 29 PHP
PHP 数组黑名单/白名单实例代码详解
Jun 04 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表单提交问题的解决方法
2011/04/12 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
PHP数组操作类实例
2015/07/11 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
使用python实现strcmp函数功能示例
2014/03/25 Python
Python连接字符串过程详解
2020/01/06 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
体育专业个人求职信范文
2013/12/27 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
会计实训报告范文
2014/11/04 职场文书
安全保证书怎么写
2015/02/28 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
跑吧孩子观后感
2015/06/10 职场文书
初中运动会前导词
2015/07/20 职场文书
素质拓展训练感想
2015/08/07 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
Python实现双向链表
2022/05/25 Python