【问题标题】:Combine single strings php mysql合并单个字符串 php mysql
【发布时间】:2014-11-14 21:23:07
【问题描述】:

我对 PHP 和 MySQL 的了解并不深。 我有一个带有pick_number(varchar,4)字段的表。 我需要三样东西:

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)将组合存储在另一个字段中,以便我可以搜索是否需要(我猜逗号分隔 应该做的伎俩)。

谢谢!

【问题讨论】:

  • 看看排列。

标签: php mysql string combinations


【解决方案1】:

试试这个。

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

【讨论】:

  • 你好,一个相同的时候返回重复的数字,如7771,应该只返回1777,7177,7717,7771,但是返回了24个数字,大部分是相同的。
  • 如果你将它存储到一个数组中,那么你可以使用 "array_unique($array)" (php.net/manual/en/function.array-unique.php) 从数组中删除重复项
【解决方案2】:

要组合所有可能的组合,您可以使用此功能:

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

【讨论】:

  • 嗨,返回所有 255 种可能性,但是,应该只组合字符串而不重复它们,数字是 1234,输出应该打乱这四个数字的所有可能性,没有重复,但返回 2222、2223等...谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 2015-08-24
  • 2015-12-13
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多