怎么能用PHP输出一个由a,b,c三个字母组成的全部组合呢?
发布网友
发布时间:2023-10-04 08:11
我来回答
共4个回答
热心网友
时间:2024-11-17 05:57
你这个不是组合的问题,而是排列的问题。
从网上给你找了段现成的代码:
<?php
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;
}
?>
用法示例 :
<?php
$arr=permutations("ABC",3);
print_r($arr);
?>
输出 :
Array
(
[0] => AAA
[1] => AAB
[2] => AAC
[3] => ABA
[4] => ABB
[5] => ABC
[6] => ACA
[7] => ACB
[8] => ACC
[9] => BAA
[10] => BAB
[11] => BAC
[12] => BBA
[13] => BBB
[14] => BBC
[15] => BCA
[16] => BCB
[17] => BCC
[18] => CAA
[19] => CAB
[20] => CAC
[21] => CBA
[22] => CBB
[23] => CBC
[24] => CCA
[25] => CCB
[26] => CCC
)
热心网友
时间:2024-11-17 05:57
<?php
//兄弟我原创的...给点辛苦分吧哈哈。
$str = array('A','B','C','D');//初始数据,可以无限添加。
//函数体
function A($array, $return='')
{
if(!$return) $return = $array;//初始化
$temp = array();
//组合新数据
foreach ($return as $value)
{
foreach ($array as $v)
{
$temp[] = $value.$v;
}
}
$return = $temp;
//判断是否输出结果
if(strlen($return[0])==count($array))
{
return $return;
}else{
$return = A($array, $return);
return $return;
}
}
//执行输出
print_r(A($str));
?>
热心网友
时间:2024-11-17 05:58
看着改吧……呵呵
<?php
$a=A;
$b=B;
$c=C;
$m= rand(1,30);
$n= rand(1,20);
for($i=0;$i<$m;$i++)
{
for ($ii=0;$ii<$n;$ii++)
{echo $a;}
for ($ii=0;$ii<$n;$ii++)
{echo $b;}
for ($ii=0;$ii<$n;$ii++)
{echo $c;}
}
热心网友
时间:2024-11-17 05:58
<?php
$sum=0;
for($i=a;$i<=c;$i++)
{
for($j=a;$j<=c;$j++)
{
for($k=a;$k<=c;$k++)
{
echo $i.$j.$k."<br/>";
$sum++;
}
}
}
echo "一共有{$sum}个组合";
?>
呵呵,一共有27个组合呢。不重复