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 相关文章推荐
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
PHP 时间转换Unix时间戳代码
Jan 22 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
详解PHP数组赋值方法
Nov 07 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
PHP常用日期加减计算方法实例小结
Jul 31 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
php的正则处理函数总结分析
2008/06/20 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
用javascript操作xml
2006/11/04 Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
一个基于flask的web应用诞生(1)
2017/04/11 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
python连接mongodb密码认证实例
2018/10/16 Python
Python3标准库总结
2019/02/19 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
司机岗位职责
2013/11/15 职场文书
拓展培训心得体会
2014/01/04 职场文书
初级会计求职信范文
2014/02/15 职场文书
开学寄语大全
2014/04/08 职场文书
公证委托书
2014/08/01 职场文书
商场周年庆活动方案
2014/08/19 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书