2014-09-20 49 views
2

我在PHP和MySQL方面的知識並不深入。 我有一個pick_number(varchar,4)字段的表。 我需要三兩件事:合併單個字符串php mysql

1)聯合的4號和產生所有可能的組合(將是24,如果所有數字 不同)號碼必須在每個4個數字,如:1234,2341,等....減少組合的數目,如果一個數是相同的另一個,如1123 在這裏,我認爲隔離的數字:

$pick_number=GetRow("SELECT pick_number from table"); 
$n1=substr($pick_number, 0, 1); 
$n2=substr($pick_number, 1, 1); 
$n3=substr($pick_number, 2, 1); 
$n4=substr($pick_number, 3, 1); 

2)計數在另一個字段中的組合和存儲;

3)將組合存儲在另一個字段中,所以我可以搜索我是否需要(我猜逗號分隔 應該做的伎倆)。

謝謝!

+0

看看permutati附件。 – 2014-09-20 11:35:21

回答

0

試試這個。

function pc_permute($items, $perms = array()) { 
    if (empty($items)) { 
     print join(' ', $perms) . "\n"; 
    } else { 
     for ($i = count($items) - 1; $i >= 0; --$i) { 
      $newitems = $items; 
      $newperms = $perms; 
      list($foo) = array_splice($newitems, $i, 1); 
      array_unshift($newperms, $foo); 
      pc_permute($newitems, $newperms); 
      echo '<br>'; 
     } 
    } 
} 

    pc_permute(array(0,1,2,3)); 
+0

嗨,返回重複的數字,當一個是相同的,如7771,應該只返回1777,7177,7717,7771,但返回24個數字,其中大部分是相同的。 – nmj77 2014-09-20 12:25:22

+0

如果你把它存儲到一個數組,然後你可以使用「array_unique($ array)」(http://php.net/manual/en/function.array-unique.php)從數​​組中刪除重複項。 – Salini 2014-09-22 05:50:20

0

對於所有更多鈔票的組合相結合,你可以使用此功能:

https://stackoverflow.com/a/19067884/4015178

減少組合的數量:)

foreach($combinations as $key => $combination) { 
    foreach (count_chars($combination, 1) as $val) { 
     if($val > 1) { 
      unset($combinations[$key]); 
      break; 
     } 
    } 
} 

更多關於count_chars( - http://php.net/manual/en/function.count-chars.php

+0

嗨,返回所有255個可能性,但是,只應該組合字符串而不重複它們,數字是1234,輸出應該在這四個數字中拼湊所有可能性,而不重複,但是返回2222,2223等... thx – nmj77 2014-09-20 12:35:11