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 相关文章推荐
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
Jan 29 PHP
PHP 实例化类的一点摘记
Mar 23 PHP
mysql limit查询优化分析
Nov 12 PHP
PHP setcookie() cannot modify header information 的解决方法
Jan 09 PHP
session在PHP大型web应用中的使用
Jun 25 PHP
如何取得中文字符串中出现次数最多的子串
Aug 08 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
PHP时间和日期函数详解
May 08 PHP
微信公众平台开发之配置与请求
Aug 26 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 PHP
浅谈php调用python文件
Mar 29 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
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
使用PHPCMS搭建wap手机网站
2015/09/20 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
javascript 回调函数详解
2014/11/11 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
Python 保持登录状态进行接口测试的方法示例
2019/08/06 Python
python日志模块logbook使用方法
2019/09/19 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
Python2与Python3的区别详解
2020/02/09 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
PHP两种查询函数array/row的区别
2013/06/03 面试题
就职演讲稿范文
2014/05/19 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
不同意离婚答辩状
2015/05/22 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android