实例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
<?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输出多个元素的排列或组合的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。