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的知识
Nov 17 PHP
php为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 PHP
计算一段日期内的周末天数的php代码(星期六,星期日总和)
Nov 12 PHP
php生成xml简单实例代码
Dec 16 PHP
新手菜鸟必读:session与cookie的区别
Aug 22 PHP
destoon实现首页显示供应、企业、资讯条数的方法
Jul 15 PHP
PHP读取汉字的点阵数据
Jun 22 PHP
深入理解PHP变量的值类型和引用类型
Oct 21 PHP
Laravel与CI框架中截取字符串函数
May 08 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
Jan 30 PHP
PHP设置Cookie的HTTPONLY属性方法
Feb 09 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 23 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截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
对numpy中array和asarray的区别详解
2018/04/17 Python
python使用epoll实现服务端的方法
2018/10/16 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
python 自定义对象的打印方法
2019/01/12 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
如何设置Java的运行环境
2013/04/05 面试题
枚举与#define宏的区别
2014/04/30 面试题
毕业生自我鉴定
2013/12/04 职场文书
校长就职演讲稿
2014/01/06 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android