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速度全攻略
Oct 09 PHP
php addslashes和mysql_real_escape_string
Jan 24 PHP
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
比较全面的PHP数组的使用方法小结
Sep 23 PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 PHP
基于PHP编程注意事项的小结
Apr 27 PHP
php的ZipArchive类用法实例
Oct 20 PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 PHP
浅析Yii2中GridView常见操作
Apr 22 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
php连接mysql数据库
Mar 21 PHP
PHP中类与对象功能、用法实例解读
Mar 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
php 设计模式之 工厂模式
2008/12/19 PHP
如何用PHP实现插入排序?
2013/04/10 PHP
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
介绍JavaScript中Math.abs()方法的使用
2015/06/14 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
Python接口自动化测试的实现
2020/08/28 Python
python如何将图片转换素描画
2020/09/08 Python
大学生咖啡店创业计划书
2014/01/21 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
会计的岗位职责
2014/03/15 职场文书
征婚广告词
2014/03/17 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
2015年消防工作总结
2015/04/24 职场文书
新年寄语2016
2015/08/17 职场文书