다중 for문 재문의.. 채택완료
1,540개의 연산을 858번 처리하도록 한 코드이고,
1번~773번 까지는 정상 값
774번 부터 858번까지는 나올 수 없는 값이 출력됩니다.
제 똥컴에서는 이 루프문을 처리하는데 10~13초 걸리는데;; 비효율적인거 같기도하네요.
코드가 다소 못배운 티가 날 수도 있는데 양해 바라며..
</p>
<p><?php</p>
<p>//<strong>연산파트</strong></p>
<p> </p>
<p>$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]);
}
}
}</p>
<p>$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);</p>
<p>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;
}
}
}</p>
<p>?></p>
<p><?php</p>
<p>//<strong>출력파트</strong></p>
<p>
$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 } ?>
<?php } ?></p>
<p>
답변 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를 확인해보셔야 합니다.
답변에 대한 댓글 3개
DB 호출시 wr_num을 기준으로 한것이 문제같아요.
글이 작성되고 삭제되고 다시 작성되는 과정에서 wr_num 값 일부가
전체 행수를 초과하는 값을 가지고 있어서인듯 합니다.
또는 wr_num과 wr_parent 값이 불일치하는 값이 있어서일수도 있겠네요.
======
에고.. DB 지우고 엑셀로 일괄 재등록 했는데 동일하네요.. 연산쪽에 문제가 있는가봅니다.
wr_num 과 wr_parent 는 전혀 다른 값을 갖는구조인것은 맞습니다.
잠자리 들기전에 답변드린것이라서 위의 for문에서 정상적인 갯수가 출력되는것 확인하고 답드린것이었네요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
for ($i=0; $i <= count($res); $i++) { 이부분은 소스 취합중에 수정한 것인데
$i=1 로 하고 $res[$i-1] 으로 처리했을때 773번 기점으로 정상 비정상이 구분되고, 본문에 작성한 것처럼
$i=0 으로 하고 $res[$i]로 처리했을때는 1번부터 773번 사이에도 띄엄띄엄
결과 값이 달리 출력되네요.
좀 더 살펴봐야겠네요. 말씀 감사합니다.