PHP输出多个元素的排列或组合的方法


Posted in PHP onMarch 14, 2017

实例如下:

<?php
$arr = array('a','b','c','d');
$result = array();
$t = getCombinationToString($arr, 1);
print_r($t);
$t = getCombinationToString($arr, 2);
$t2 = getunique($t);
print_r($t2);
$t = getCombinationToString($arr, 3);
$t2 = getunique($t);
print_r($t2);
$t = getCombinationToString($arr, 4);
$t2 = getunique($t);
print_r($t2);

function getunique($t){
	$t2 = array();
	//print_r($t);
	for($i=0;$i<count($t);$i++){
		$count_list = array_count_values($t[$i]);
		$flag = 1;
		foreach($count_list as $ck=>$cv){
			if($cv>1){
				$flag = 0;
				break;
			}
		}
		if($flag){
			sort($t[$i]);
			$flag2 = 1;
			if($t2){
				foreach($t2 as $t2k=>$t2v){
					if($t[$i]==$t2v){
						$flag2 = 0;
						break;
					}
				}
			}
			if($flag2){
				$t2[] = $t[$i];
			}
		}
	}
	return $t2;
}

function getCombinationToString($arr, $m) {
	if ($m ==1) {
	 return $arr;
	}
	$result = array();
	
	$tmpArr = $arr;
	unset($tmpArr[0]);
	for($i=0;$i<count($arr);$i++) {
		$s = $arr[$i];
		$ret = getCombinationToString(array_values($tmpArr), ($m-1), $result);
		
		foreach($ret as $row) {
			//$result[] = $s . $row;
			$temp = array();
			$temp[] = $s;
			if(is_array($row)){
				$temp = array_merge($temp,$row);
			}else{
				$temp[] = $row;
			}
			sort($temp);
			$result[] = $temp;
		}
	}
 return $result;
}

?>

共15种排列结果。

以上这篇PHP输出多个元素的排列或组合的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
打造计数器DIY三步曲(上)
Oct 09 PHP
frename PHP 灵活文件命名函数 frename
Sep 09 PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
Sep 30 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
Oct 12 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
PHP进程同步代码实例
Feb 12 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
Apr 11 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 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
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
Mar 13 #PHP
You might like
Terran历史背景
2020/03/14 星际争霸
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
php数据库备份还原类分享
2014/03/20 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
JavaScript 实现??打印?理
2007/04/28 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
Javascript之String对象详解
2016/06/08 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
python实现Floyd算法
2018/01/03 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
优秀企业获奖感言
2014/02/01 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
干部下基层实施方案
2014/03/14 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
Python3的进程和线程你了解吗
2022/03/16 Python
python实现双链表
2022/05/25 Python