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实现采集程序原理和简单示例代码
Mar 18 PHP
php 设计模式之 工厂模式
Dec 19 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
Jun 03 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
php实现的漂亮分页方法
Apr 17 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
Jun 19 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
yii权限控制的方法(三种方法)
Dec 28 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
Sep 19 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通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
showModelessDialog()使用详解
2006/09/07 Javascript
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
js性能优化技巧
2015/11/29 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
2016/04/14 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
护理学毕业生自荐信
2013/10/02 职场文书
优秀士兵个人事迹材料
2014/01/19 职场文书
音乐器材管理制度
2014/01/31 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
初中班主任寄语
2014/04/04 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
大学学生会竞选稿
2015/11/19 职场文书
导游词之日月潭
2019/11/05 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
python如何利用cv2模块读取显示保存图片
2021/06/04 Python