php二次开发排列,PHP-给定一个字符串和排列组合长度生成所有可能的排列组合...

今天在整理ShopEX的博饼插件时,因为使用到中奖样例,简单的就是需要获得1,2,3,4,5,6的全部组合数,自己写了一个生成方法结果太耗资源了,只好网上找一个,结果发现真的能用的没多少,下面推荐的就是可以用的,保存以防止未来可能还需要用到。

PHP代码的作用就是指定要生成组合的字符,然后组合长度,程序将会自动生成全部的可能组合噢。

下面代码就是全部的,直接拷贝进PHP文件内,执行即可得到111111~666666之间的全部组合噢。

function permutations($letters,$num){

$last = str_repeat($letters{0},$num);

$result = array();

while($last != str_repeat(lastchar($letters),$num)){

$result[] = $last;

$last = char_add($letters,$last,$num-1);

}

$result[] = $last;

return $result;

}

function char_add($digits,$string,$char){

if($string{$char} <> lastchar($digits)){

$string{$char} = $digits{strpos($digits,$string{$char})+1};

return $string;

}else{

$string = changeall($string,$digits{0},$char);

return char_add($digits,$string,$char-1);

}

}

function lastchar($string){

return $string{strlen($string)-1};

}

function changeall($string,$char,$start = 0,$end = 0){

if($end == 0) $end = strlen($string)-1;

for($i=$start;$i<=$end;$i++){

$string{$i} = $char;

}

return $string;

}

?>

{!–To use this Generator you can do something like this : –}

$Array=permutations(“123456”,6);

for($i=0 ; $i < count($Array) ; $i++) {

echo “$i.” . $Array[$i] . “
”;

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值