다중 for문 재문의..
본문
1,540개의 연산을 858번 처리하도록 한 코드이고,
1번~773번 까지는 정상 값
774번 부터 858번까지는 나올 수 없는 값이 출력됩니다.
제 똥컴에서는 이 루프문을 처리하는데 10~13초 걸리는데;; 비효율적인거 같기도하네요.
코드가 다소 못배운 티가 날 수도 있는데 양해 바라며..
<?php
//연산파트
 
$pool = range('a', 'v');
$len = count($pool); // $len = 22
//$res = [];
for($x=0; $x<$len; $x++) {
    for($y=$x+1; $y<$len; $y++) {
        for($z=$y+1; $z<$len; $z++) {
            $res[] = sprintf('%s%s%s', $pool[$x], $pool[$y], $pool[$z]);
        }
    }
}
$lottery_table = 'lottery_result';
$lottery_write_table = $g5['write_prefix'] .$lottery_table; 
$sql = " select * from $lottery_write_table order by wr_num asc ";
$result = sql_query($sql);
for($n=1; $win_row=sql_fetch_array($result); $n++) {
    
    for ($k=1; $k <= 6; $k++) {
        if($gr_a[0] == $win_row['wr_'.$k]) {  ${'a1'.$k.'_'.$n} = 1; } else if($gr_a[0] == $win_row['wr_7']) { ${'a11_'.$n} = 7; }
        if($gr_a[1] == $win_row['wr_'.$k]) {  ${'a2'.$k.'_'.$n} = 1; } else if($gr_a[1] == $win_row['wr_7']) { ${'a21_'.$n} = 7; }
        if($gr_b[0] == $win_row['wr_'.$k]) {  ${'b1'.$k.'_'.$n} = 1; } else if($gr_b[0] == $win_row['wr_7']) { ${'b11_'.$n} = 7; }
        if($gr_b[1] == $win_row['wr_'.$k]) {  ${'b2'.$k.'_'.$n} = 1; } else if($gr_b[1] == $win_row['wr_7']) { ${'b21_'.$n} = 7; }
        if($gr_c[0] == $win_row['wr_'.$k]) {  ${'c1'.$k.'_'.$n} = 1; } else if($gr_c[0] == $win_row['wr_7']) { ${'c11_'.$n} = 7; }
        if($gr_c[1] == $win_row['wr_'.$k]) {  ${'c2'.$k.'_'.$n} = 1; } else if($gr_c[1] == $win_row['wr_7']) { ${'c21_'.$n} = 7; }
        if($gr_d[0] == $win_row['wr_'.$k]) {  ${'d1'.$k.'_'.$n} = 1; } else if($gr_d[0] == $win_row['wr_7']) { ${'d11_'.$n} = 7; }
        if($gr_d[1] == $win_row['wr_'.$k]) {  ${'d2'.$k.'_'.$n} = 1; } else if($gr_d[1] == $win_row['wr_7']) { ${'d21_'.$n} = 7; }
        if($gr_e[0] == $win_row['wr_'.$k]) {  ${'e1'.$k.'_'.$n} = 1; } else if($gr_e[0] == $win_row['wr_7']) { ${'e11_'.$n} = 7; }
        if($gr_e[1] == $win_row['wr_'.$k]) {  ${'e2'.$k.'_'.$n} = 1; } else if($gr_e[1] == $win_row['wr_7']) { ${'e21_'.$n} = 7; }
        if($gr_f[0] == $win_row['wr_'.$k]) {  ${'f1'.$k.'_'.$n} = 1; } else if($gr_f[0] == $win_row['wr_7']) { ${'f11_'.$n} = 7; }
        if($gr_f[1] == $win_row['wr_'.$k]) {  ${'f2'.$k.'_'.$n} = 1; } else if($gr_f[1] == $win_row['wr_7']) { ${'f21_'.$n} = 7; }
        if($gr_g[0] == $win_row['wr_'.$k]) {  ${'g1'.$k.'_'.$n} = 1; } else if($gr_g[0] == $win_row['wr_7']) { ${'g11_'.$n} = 7; }
        if($gr_g[1] == $win_row['wr_'.$k]) {  ${'g2'.$k.'_'.$n} = 1; } else if($gr_g[1] == $win_row['wr_7']) { ${'g21_'.$n} = 7; }
        if($gr_h[0] == $win_row['wr_'.$k]) {  ${'h1'.$k.'_'.$n} = 1; } else if($gr_h[0] == $win_row['wr_7']) { ${'h11_'.$n} = 7; }
        if($gr_h[1] == $win_row['wr_'.$k]) {  ${'h2'.$k.'_'.$n} = 1; } else if($gr_h[1] == $win_row['wr_7']) { ${'h21_'.$n} = 7; }
        if($gr_i[0] == $win_row['wr_'.$k]) {  ${'i1'.$k.'_'.$n} = 1; } else if($gr_i[0] == $win_row['wr_7']) { ${'i11_'.$n} = 7; }
        if($gr_i[1] == $win_row['wr_'.$k]) {  ${'i2'.$k.'_'.$n} = 1; } else if($gr_i[1] == $win_row['wr_7']) { ${'i21_'.$n} = 7; }
        
        if($gr_j[0] == $win_row['wr_'.$k]) {  ${'j1'.$k.'_'.$n} = 1; } else if($gr_j[0] == $win_row['wr_7']) { ${'j11_'.$n} = 7; }
        if($gr_j[1] == $win_row['wr_'.$k]) {  ${'j2'.$k.'_'.$n} = 1; } else if($gr_j[1] == $win_row['wr_7']) { ${'j21_'.$n} = 7; }
        if($gr_k[0] == $win_row['wr_'.$k]) {  ${'k1'.$k.'_'.$n} = 1; } else if($gr_k[0] == $win_row['wr_7']) { ${'k11_'.$n} = 7; }
        if($gr_k[1] == $win_row['wr_'.$k]) {  ${'k2'.$k.'_'.$n} = 1; } else if($gr_k[1] == $win_row['wr_7']) { ${'k21_'.$n} = 7; }
        if($gr_l[0] == $win_row['wr_'.$k]) {  ${'l1'.$k.'_'.$n} = 1; } else if($gr_l[0] == $win_row['wr_7']) { ${'l11_'.$n} = 7; }
        if($gr_l[1] == $win_row['wr_'.$k]) {  ${'l2'.$k.'_'.$n} = 1; } else if($gr_l[1] == $win_row['wr_7']) { ${'l21_'.$n} = 7; }
        if($gr_m[0] == $win_row['wr_'.$k]) {  ${'m1'.$k.'_'.$n} = 1; } else if($gr_m[0] == $win_row['wr_7']) { ${'m11_'.$n} = 7; }
        if($gr_m[1] == $win_row['wr_'.$k]) {  ${'m2'.$k.'_'.$n} = 1; } else if($gr_m[1] == $win_row['wr_7']) { ${'m21_'.$n} = 7; }
        if($gr_n[0] == $win_row['wr_'.$k]) {  ${'n1'.$k.'_'.$n} = 1; } else if($gr_n[0] == $win_row['wr_7']) { ${'n11_'.$n} = 7; }
        if($gr_n[1] == $win_row['wr_'.$k]) {  ${'n2'.$k.'_'.$n} = 1; } else if($gr_n[1] == $win_row['wr_7']) { ${'n21_'.$n} = 7; }
        if($gr_o[0] == $win_row['wr_'.$k]) {  ${'o1'.$k.'_'.$n} = 1; } else if($gr_o[0] == $win_row['wr_7']) { ${'o11_'.$n} = 7; }
        if($gr_o[1] == $win_row['wr_'.$k]) {  ${'o2'.$k.'_'.$n} = 1; } else if($gr_o[1] == $win_row['wr_7']) { ${'o21_'.$n} = 7; }
        if($gr_p[0] == $win_row['wr_'.$k]) {  ${'p1'.$k.'_'.$n} = 1; } else if($gr_p[0] == $win_row['wr_7']) { ${'p11_'.$n} = 7; }
        if($gr_p[1] == $win_row['wr_'.$k]) {  ${'p2'.$k.'_'.$n} = 1; } else if($gr_p[1] == $win_row['wr_7']) { ${'p21_'.$n} = 7; }
        if($gr_q[0] == $win_row['wr_'.$k]) {  ${'q1'.$k.'_'.$n} = 1; } else if($gr_q[0] == $win_row['wr_7']) { ${'q11_'.$n} = 7; }
        if($gr_q[1] == $win_row['wr_'.$k]) {  ${'q2'.$k.'_'.$n} = 1; } else if($gr_q[1] == $win_row['wr_7']) { ${'q21_'.$n} = 7; }
        if($gr_r[0] == $win_row['wr_'.$k]) {  ${'r1'.$k.'_'.$n} = 1; } else if($gr_r[0] == $win_row['wr_7']) { ${'r11_'.$n} = 7; }
        if($gr_r[1] == $win_row['wr_'.$k]) {  ${'r2'.$k.'_'.$n} = 1; } else if($gr_r[1] == $win_row['wr_7']) { ${'r21_'.$n} = 7; }
        
        if($gr_s[0] == $win_row['wr_'.$k]) {  ${'s1'.$k.'_'.$n} = 1; } else if($gr_s[0] == $win_row['wr_7']) { ${'s11_'.$n} = 7; }
        if($gr_s[1] == $win_row['wr_'.$k]) {  ${'s2'.$k.'_'.$n} = 1; } else if($gr_s[1] == $win_row['wr_7']) { ${'s21_'.$n} = 7; }
        if($gr_t[0] == $win_row['wr_'.$k]) {  ${'t1'.$k.'_'.$n} = 1; } else if($gr_t[0] == $win_row['wr_7']) { ${'t11_'.$n} = 7; }
        if($gr_t[1] == $win_row['wr_'.$k]) {  ${'t2'.$k.'_'.$n} = 1; } else if($gr_t[1] == $win_row['wr_7']) { ${'t21_'.$n} = 7; }
        if($gr_u[0] == $win_row['wr_'.$k]) {  ${'u1'.$k.'_'.$n} = 1; } else if($gr_u[0] == $win_row['wr_7']) { ${'u11_'.$n} = 7; }
        if($gr_u[1] == $win_row['wr_'.$k]) {  ${'u2'.$k.'_'.$n} = 1; } else if($gr_u[1] == $win_row['wr_7']) { ${'u21_'.$n} = 7; }
        
        if($gr_v[0] == $win_row['wr_'.$k]) {  ${'v1'.$k.'_'.$n} = 1; } else if($gr_v[0] == $win_row['wr_7']) { ${'v11_'.$n} = 7; }
        if($gr_v[1] == $win_row['wr_'.$k]) {  ${'v2'.$k.'_'.$n} = 1; } else if($gr_v[1] == $win_row['wr_7']) { ${'v21_'.$n} = 7; }
    }
    
    for ($i=0; $i <= count($res); $i++) {
        
        switch(${$res[$i][0].'11_'.$n}+${$res[$i][0].'12_'.$n}+${$res[$i][0].'13_'.$n}+${$res[$i][0].'14_'.$n}+${$res[$i][0].'15_'.$n}+${$res[$i][0].'16_'.$n}+
               ${$res[$i][0].'21_'.$n}+${$res[$i][0].'22_'.$n}+${$res[$i][0].'23_'.$n}+${$res[$i][0].'24_'.$n}+${$res[$i][0].'25_'.$n}+${$res[$i][0].'26_'.$n}+
               ${$res[$i][1].'11_'.$n}+${$res[$i][1].'12_'.$n}+${$res[$i][1].'13_'.$n}+${$res[$i][1].'14_'.$n}+${$res[$i][1].'15_'.$n}+${$res[$i][1].'16_'.$n}+
               ${$res[$i][1].'21_'.$n}+${$res[$i][1].'22_'.$n}+${$res[$i][1].'23_'.$n}+${$res[$i][1].'24_'.$n}+${$res[$i][1].'25_'.$n}+${$res[$i][1].'26_'.$n}+
               ${$res[$i][2].'11_'.$n}+${$res[$i][2].'12_'.$n}+${$res[$i][2].'13_'.$n}+${$res[$i][2].'14_'.$n}+${$res[$i][2].'15_'.$n}+${$res[$i][2].'16_'.$n}+
               ${$res[$i][2].'21_'.$n}+${$res[$i][2].'22_'.$n}+${$res[$i][2].'23_'.$n}+${$res[$i][2].'24_'.$n}+${$res[$i][2].'25_'.$n}+${$res[$i][2].'26_'.$n}
               ) {
            case '3'        : ${'comb'.$n.$i} = '5등'; break;
            case '10'        : ${'comb'.$n.$i} = '5등'; break;
            case '4'        : ${'comb'.$n.$i} = '4등'; break;
            case '11'        : ${'comb'.$n.$i} = '4등'; break;
            case '5'        : ${'comb'.$n.$i} = '3등'; break;
            case '12'        : ${'comb'.$n.$i} = '2등'; break;
            case '6'        : ${'comb'.$n.$i} = '1등'; break;
            default        : ${'comb'.$n.$i} = ''; break;
        }
    }
}
?>
<?php
//출력파트
                          
                          $lottery_table = 'lottery_result';
                          $lottery_write_table = $g5['write_prefix'] .$lottery_table; 
                          $sql = " select * from $lottery_write_table order by wr_num asc ";
                          $result = sql_query($sql);
                          for($n=1; $win_row=sql_fetch_array($result); $n++) {
                              ${'comb_arr'.$n} = array();
                              echo $win_row['wr_8']. '회 - ';
                              for ($i=1; $i <= count($res); $i++) {
                                  array_push(${'comb_arr'.$n}, ${'comb'.$n.$i});
                              }
                                sort(${'comb_arr'.$n});
                                ${'comb_arr2_'.$n} = array_filter(${'comb_arr'.$n});
                                ${'num'.$n} = array_count_values(${'comb_arr2_'.$n});
                             
                                 foreach( ${'num'.$n} as $key => $value ){
                                    
                                    switch($key) {
                                        case '5등'        : $grade_color = 'darkgray'; break;
                                        case '4등'        : $grade_color = 'yellow'; break;
                                        case '3등'        : $grade_color = 'green'; break;
                                        case '2등'        : $grade_color = 'blue'; break;
                                        case '1등'        : $grade_color = 'red'; break;
                                        default        : $grade_color = ''; break;
                                  }
                         
                         ?>
                             <span class="bold label bg-<?php echo $grade_color; ?>"><?php echo $key; ?></span> <?php echo $value; ?>개
                         <?php } ?><br />
                         <?php } ?>
!-->
답변 1
1540개가 작동되는건
$pool = range('a', 'v');
$len = count($pool); // $len = 22
//$res = [];
for($x=0; $x<$len; $x++) {
    for($y=$x+1; $y<$len; $y++) {
        for($z=$y+1; $z<$len; $z++) {
            $res[] = sprintf('%s%s%s', $pool[$x], $pool[$y], $pool[$z]);
            echo $pool[$x]."-".$pool[$y]."-".$pool[$z]."<br>";
        }
    }
}
이것으로 확인가능합니다.
아래의
for($n=1; $win_row=sql_fetch_array($result); $n++) {
이 내용은 DB의 값에 따라 작동하므로
위에서 질문하신 내용은 DB를 확인해보셔야 합니다.
                답변을 작성하시기 전에 로그인 해주세요.
            
    
