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',
)