数据的排列组合二

    xiaoxiao2021-11-30  27

    直接贴代码:

    $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 $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 希望能用到的 提供思路帮助 。

    转载请注明原文地址: https://ju.6miu.com/read-679183.html

    最新回复(0)