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 相关文章推荐
第十三节 对象串行化 [13]
Oct 09 PHP
获取远程文件大小的php函数
Jan 11 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
Sep 23 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
php计算整个目录大小的方法
Jun 19 PHP
php生成二维码图片方法汇总
Dec 17 PHP
PHP面向对象程序设计类的定义与用法简单示例
Dec 27 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
Jun 10 PHP
php实现页面纯静态的实例代码
Jun 21 PHP
PHP的mysqli_select_db()函数讲解
Jan 23 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 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
博士208HAF收音机实习报告
2021/03/02 无线电
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
不错的JS中变量相关的细节分析
2007/08/13 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
js选项卡的实现方法
2015/02/09 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
理解python中生成器用法
2017/12/20 Python
单链表反转python实现代码示例
2018/02/08 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
Python数组并集交集补集代码实例
2020/02/18 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
美国最大网上鞋店:Zappos
2016/07/25 全球购物
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
.NET程序员的数据库面试题
2012/10/10 面试题
英文求职信范文
2014/05/23 职场文书
企业法人授权委托书
2014/09/25 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS