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 相关文章推荐
php自动适应范围的分页代码
Aug 05 PHP
10条PHP编程习惯助你找工作
Sep 29 PHP
解析mysql 表中的碎片产生原因以及清理
Jun 22 PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
php上传大文件失败的原因及应对策略
Oct 20 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
使用php+swoole对client数据实时更新(一)
Jan 07 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
php自定义截取中文字符串-utf8版
Feb 27 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
Protoss兵种介绍
2020/03/14 星际争霸
PHP无限分类的类
2007/01/02 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
php生成短域名函数
2015/03/23 PHP
基于win2003虚拟机中apache服务器的访问
2017/08/01 PHP
jquery访问ashx文件示例代码
2014/08/11 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
tensorflow输出权重值和偏差的方法
2018/02/10 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
应届行政管理专业个人自我评价
2013/12/28 职场文书
农贸市场管理制度
2014/01/31 职场文书
建筑安全生产责任书
2014/07/22 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
小学生读书笔记
2015/07/01 职场文书
感恩教师节主题班会
2015/08/12 职场文书
Nginx配置Https安全认证的实现
2021/05/26 Servers
python百行代码实现汉服圈图片爬取
2021/11/23 Python