直接贴代码:
$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$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;
}
654321
234567
765432
345678
876543
456789
987654
希望能用到的 提供思路帮助 。