다중 for문 오류
본문
for($i=0; $row=sql_fetch_array($result); $i++)
{
for ($j=1; $j<=$row['linkCount']; $j++) {
//////////////////////////////////////////////////////////////////////
}
}
출력하면 01 02 03 11 12 13 14 21 22 23 24 25 이런식으로 나와야 하는데
01 02 03 13 14 24 25 이렇게 출력이 되네요.
$j값이 루프후 1로 돌아와야 하는데 그 전 출력된 값에 영향을 받는거 같은데요.
어떤 부분이 잘못되었는지 알려주실수 있을까요?
!-->답변 5
소스를 다 봐야 알 수 있지 않을까요?
아래에 $j 를 $l 로 수정해보세요.
for($i=0; $row=sql_fetch_array($result); $i++)
{
for ($l=1; $l <= 30; $l++) {
if (isset($row['wr_link'.$l]) && $row['wr_link'.$l])
$row['linkCount']++;
}
for ($j=1; $j<=$row['linkCount']; $j++) {
for ($i=0; $row=sql_fetch_array($result); $i++)
{
for ($j=0; $j < 30; $j++)
{
if (isset($row['wr_link'.$j+1]) && $row['wr_link'.$j+1])
$row['linkCount']++;
}
for ($j=0; $j<$row['linkCount']; $j++)
{
$k = $i + $j;
(int)$wr_price[$j] = (int)$row['wr_link'.$j+1.'_etc1']*(int)$row['wr_link'.$j+1.'_etc2'];
/* ... 생략 ... */
$worksheet->write($k, 17, $row['wr_link'.$j+1], $contents);
$worksheet->set_column(17, 17, 70);
$worksheet->write($k, 18, $row['wr_link'.$j+1.'_etc1'], $contents);
$worksheet->write($k, 19, $row['wr_link'.$j+1.'_etc2'], $contents);
$worksheet->write($k, 20, $wr_price[$j], $contents);
$worksheet->set_column(18, 20, 16);
/* ... 생략 ... */
다들 여러 답변을 위에 주셨는데요.. 지금은 보이지 않지만 쿼리를 보시면 잘못하셨을 겁니다.
결과에 대한 답변을 드리자면...출력되는 내용은 숫자가 아니라 문자로 인식이 된것입니다.
> 출력하면 01 02 03 11 12 13 14 21 22 23 24 25 이런식으로 나와야 하는데
> 01 02 03 13 14 24 25 이렇게 출력이 되네요. <-- 이것 문자로 인식을 하였다는것이지요..
개념만 알면 쉽습니다.
정렬를 문자로 인식할경우 -> 01 02 03 13 14 24 25
정렬를 숫자로 인식할경우 -> 1 2 3 13 14 24 25
요렇게 생각하면 쉽습니다.
쿼리에서 정렬을 하실때 숫자로 변경해서 정렬해보시기 바랍니다.
숫자를 문자로 인식하면 무조건 앞자리가 우선입니다
예를들어 정렬 쿼리를 하신다면
> select * from customers order by cast(customers_id as unsigned);
뒤에 cast를 사용해서 변경해서 정렬를 해보시기 바랍니다. 그럼 원하시는대로 순서적으로 정렬이 되실겁니다.
다만 해당 숫자 앞에 0값은 넣어주시면됩니다