2014-01-25 2 views
2

Hy, кто может мне помочь, у меня есть проблемы с моим сценарием ..PHP Looping ввода числовой со случайным значением

если вход 4324 в поле ввода nmber, я хочу результат:

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 
    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++; 
     } 
    } 
?> 

Я уже попробовать с подстрока и str_shuffle, но результат не нравится то, что я хочу ..

Пожалуйста, помогите мне .. :(

Большое спасибо ..

+1

Должен ли он быть именно в таком порядке или может быть в любом порядке? – MichaelRushton

+0

спасибо @MichaelRushton за ответ на мой вопрос .. я хочу, чтобы результат был точно в образце. – user2033249

+0

ОК, мой ответ ниже делает это. – MichaelRushton

ответ

0

Вы пытаются сгенерировать всю перестановку длины 4 с помощью строки 4324. Самый простой способ сгенерировать все перестановки (imho) - это рекурсия. Но вы можете это сделать итеративным методом.

Я предлагаю вам сначала изучить алгоритм и получить контроль над рекурсией. Быстрый поиск Google вернул следующие результаты

+0

большое спасибо ... сделано .... – user2033249

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))); 
Смежные вопросы