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 传值赋值与引用赋值的区别
Dec 29 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
Nov 02 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
PHP删除HTMl标签的实现代码
Jun 30 PHP
使用swoole扩展php websocket示例
Feb 13 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
php通过function_exists检测函数是否存在的方法
Mar 18 PHP
PHP实现的回溯算法示例
Aug 15 PHP
PHP命名空间简单用法示例
Dec 28 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
laravel 创建命令行命令的图文教程
Oct 23 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
Apr 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
phpmyadmin的#1251问题
2006/11/25 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
python创建关联数组(字典)的方法
2015/05/04 Python
如何在python中使用selenium的示例
2017/12/26 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
python3使用flask编写注册post接口的方法
2018/12/28 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
一个入门级python爬虫教程详解
2021/01/27 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
双十佳事迹材料
2014/01/29 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
签约仪式策划方案
2014/06/02 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
亲情作文之母爱
2019/09/25 职场文书