您的位置:首页 > 其它

数据的排列组合二

2016-11-18 14:09 246 查看
直接贴代码:

$arr = Array(1,2,3,4,5,6,7,8,9);
foreach($arr as $v) echo str_repeat($v, 6), PHP_EOL;
$arr = Array(1,2,3,4,5,6,7,8,9);
for($i=0; $i<=count($arr)-6; $i++) {
$t = array_slice($arr, $i, 6);
echo join('', $t), PHP_EOL;
echo join('', array_reverse($t)), PHP_EOL;
}
123456
654321
234567
765432
345678
876543
456789
987654



思路 其实也不难,谢谢论坛大牛的提示

首先考虑到: 六位重复性:

这是单纯数字方面

2 + 6  两位随机   6位重复    下面的也一样

6+  2

1+6 +1 

这是针对字母

2 +6

6+2

1 +6 +1

$arr_en = Array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', '0', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',);

$arr_mer = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', '0', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',);

$arr_num = Array(1, 2, 3, 4, 5, 6, 7, 8, 9);


第一步 把: 字母跟数字并在一起  $arr_mer

先写个:数字加字母一起 无重复排序: (只是两位无重复的,要是多位自己可以修改,这个网上也有的,仅参考)

//***********************************

//以下无重复排序
//$arr = array('a','b','c','d');
$arr = $arr_mer;
$result = array();
$t = getCombinationToString($arr, 2);
//print_r($t);

function getCombinationToString($arr, $m) {
if ($m ==1) {
return $arr;
}
$result = array();

$tmpArr = $arr;
unset($tmpArr[0]);
for($i=0;$i<count($arr);$i++) {
$s = $arr[$i];
$ret = getCombinationToString(array_values($tmpArr), ($m-1), $result);

foreach($ret as $row) {
$result[] = $s . $row;
}
}

return $result;
}
//*******************************************************

然后写个小循环:、 这里只是写了: 6 +2  相应的 还要写: 2+6     1+6+1  相应规则     还有字母 规则 也要写
/*$i= 0;
$j = 0;
foreach($arr_num as $en) {
$i++;
foreach ($t as $v) {
//echo (str_repeat($en, 6)).$v, PHP_EOL;
$j++;
$code = $v.(str_repeat($en, 6)).$v;
echo $code;

$sql = "INSERT INTO  table_name (uid, code, up_time, add_time)VALUES(0,'$code','$up_time','$add_time')";

if (!mysql_query($sql, $conn)) {
echo "添加数据失败:" . mysql_error();
} else {
echo "添加数据成功!",PHP_EOL;
}
echo "共".$j."个";
}

echo "共".$i."个";
}*/


下面是字母的规则:

/*$i= 0;
$j = 0;
foreach($arr_en as $en) {
$i++;
foreach ($t as $v) {
//echo (str_repeat($en, 6)).$v, PHP_EOL;
$j++;
$code = (str_repeat($en, 6)).$v;
echo $code;

$sql = "INSERT INTO table_name (uid, code, up_time, add_time)VALUES(0,'$code','$up_time','$add_time')";

if (!mysql_query($sql, $conn)) {
echo "添加数据失败:" . mysql_error();
} else {
echo "添加数据成功!",PHP_EOL;
}
echo "共".$j."个";
}

echo "共".$i."个";
}*/


备注: 如果 还有其他规则 也按照此类方法推理: 如果需要连续多少位数字一起 2+ 六位连续 六位连续+2 1+六位连续 +1

123456

654321

234567

765432

345678

876543

456789

987654

希望能用到的 提供思路帮助 。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: