php使用随机值循环输入数字

时间:2014-01-25 15:17:36

标签: php loops shuffle

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>&nbsp;&nbsp;
        <input name="nmber" size="8.5" maxlength="4"  type="text" value="<?php echo $_POST['nmber']; ?>">&nbsp;&nbsp;<b>Buy</b>&nbsp;&nbsp;
        <input name="buy" size="6" type="text" value="<?php echo $_POST['buy']; ?>">&nbsp;<font color="#000000" size="2"><b>(x 1000)</b></font>&nbsp;&nbsp;
        <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>&nbsp;<input size="2" name="bet[<?=$i?>]" value="<?=$rupiahkali?>" type="hidden"></td>
</tr>
<?php
            $no++;
        }
    }
?>

我已经尝试使用 substr str_shuffle ,但结果不像我想要的那样..

请帮帮我.. :(

非常感谢你..

2 个答案:

答案 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)));