我对PHP和MySQL的了解不是很深入。 我有一个带pick_number(varchar,4)的表,字段。 我需要3件事:
1)组合4个数字并生成所有可能的组合(如果所有数字都是24,则为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 :(得分: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));
答案 1 :(得分: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