2014-09-20 50 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