繁体   English   中英

PHP的循环输入数值与随机值

[英]php Looping input numeric with random value

嗨,有人可以帮我吗,我的脚本有问题..

如果我在输入字段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++;
        }
    }
?>

我已经尝试使用substrstr_shuffle,但是结果不像我想要的。

请帮我.. :(

非常感谢..

您尝试使用字符串4324生成长度为4的所有排列。生成所有排列(imho)的最简单方法是递归。 但是您也可以用迭代方法来完成。

我建议您首先研究算法,并掌握递归。 快速的Google搜索返回了以下结果

这可以满足您的需求:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM