发布于 5年前
php 求一个字符串的所有排列组合
代码:
<?php
$str='abc';
$startStr='';
$result=[];
$arr=['a','b','c'];//字符串转化为数组
$count=0;
var_export(pailie($arr,0,$startStr,$result,$count));
function pailie($arr,$i,$startStr,$result,$count){
$length=count($arr);
for ($i;$i<$length;$i++){
$result[]=$startStr.$arr[$i];
if($i+1>=$length){
return $result;
}
$result=pailie($arr,$i+1,$startStr.$arr[$i],$result,$count);
if($i==0){
$count++;
if($count>=$length){
break;
}
array_push($arr,array_shift($arr));
$result=pailie($arr,0,'',$result,$count);
break;
}
}
return $result;
}
输出:
array (
0 => 'a',
1 => 'ab',
2 => 'abc',
3 => 'ac',
4 => 'b',
5 => 'bc',
6 => 'bca',
7 => 'ba',
8 => 'c',
9 => 'ca',
10 => 'cab',
11 => 'cb',
)