Hy,任何人都可以帮助我,我的剧本有问题..
如果我在输入字段nmber中输入4324,我想要这样的结果:
4324
4342
4234
4243
4432
4423
3424
3442
3244
2434
2443
2344
这是我的剧本:
<form name="a" method="POST" action="">
<table border="1" width="100%">
<tbody><tr>
<td height="38" align="center"><b>Number</b>
<input name="nmber" size="8.5" maxlength="4" type="text" value="<?php echo $_POST['nmber']; ?>"> <b>Buy</b>
<input name="buy" size="6" type="text" value="<?php echo $_POST['buy']; ?>"> <font color="#000000" size="2"><b>(x 1000)</b></font>
<input name="save" style="padding:7px;" value="Submit" type="submit">
</td>
</tr>
</tbody></table>
</form>
这是我的php脚本:
<?php
if(isset($_POST['save']))
{
$dataangka=$_POST['nmber'];
$databetnya=$_POST['buy'];
$rupiahkali=$databetnya*1000;
$dataangkasplit=str_split($dataangka);
$angka1=$dataangkasplit[0];
$angka2=$dataangkasplit[1];
$angka3=$dataangkasplit[2];
$angka4=$dataangkasplit[3];
$no=1;
$n=24;
for($i=1;$i<=$n;$i++)
{
?>
<tr align="center">
<td><?=$no?></td>
<td><input name="cek[<?=$i?>]" value="1" checked="checked" type="checkbox"></td>
<td><?php echo substr(str_shuffle("$dataangka"),0,$n); ?>
<input size="2" name="res[<?=$i?>]" value="<?php echo substr(str_shuffle("$dataangka"),0,$angka4); ?>" type="hidden">
</td>
<td><?=$rupiahkali?></b> <input size="2" name="bet[<?=$i?>]" value="<?=$rupiahkali?>" type="hidden"></td>
</tr>
<?php
$no++;
}
}
?>
我已经尝试使用 substr 和 str_shuffle ,但结果不像我想要的那样..
请帮帮我.. :(
非常感谢你..
答案 0 :(得分:0)
您正尝试使用字符串4324生成长度为4的所有排列。 生成所有排列(imho)的最简单方法是递归。但是你也可以用迭代方法做到这一点。
我建议你先学习算法,然后掌握递归。快速谷歌搜索返回以下结果
答案 1 :(得分:0)
这可以满足您的需求:
function getCombinations(array $a)
{
switch (TRUE)
{
case !isset($a[1]):
return $a;
case !isset($a[2]):
return array(implode($a), implode(array_reverse($a)));
default:
$return = [];
foreach ($a as $k => $e)
{
$c = $a;
array_splice($c, $k, 1);
foreach (getCombinations($c) as $r)
{
$return[] = $e . $r;
}
}
return array_unique($return);
}
}
$s = '4324';
echo implode('<br>', getCombinations(str_split($s)));