게시판 리스트 for안에 for를 한번더 사용 코드 좀 봐주세요.

게시판 리스트 for안에 for를 한번더 사용 코드 좀 봐주세요.

QA

게시판 리스트 for안에 for를 한번더 사용 코드 좀 봐주세요.

본문

아래처럼 코드를 넣었는데요.

print_r($apercent_30); 값이 제대로 안나오네요.
뭐가 잘못 된건지 아시는분 도움 좀 부탁드립니다.

 

리스트 코드

for ($i=0; $i<count($list); $i++) {

for ($t = 0;  $t < count($awr_body_28); $t++) {
$awr_body_28_c = explode("-",$awr_body_28[$t]);
if($awr_body_28_c[3]){
if($awr_body_28_c[4]){
$aval_28 = $awr_body_28_c[3] - $awr_body_28_c[4];
} else {
$aval_28 = $awr_body_28_c[3] - $awr_body_28_c[2];
}
$afull_28 = $awr_body_28_c[3];
$apercent_28 = $aval_28 / $afull_28 * 100;
$apercent_29 = sprintf("%.0f", $apercent_28);
$apercent_30[$t] = $apercent_29;
//$apercent_30[] = $apercent_29; 이거도안되고
//echo $apercent_29; 여기에 출력하면 아래처럼 정확한 값이 나온다.
// list for 첫번째 754017 정상
// list for 두번째 4540 정상
}
}
// 값이 제대로 안나옵니다.
print_r($apercent_30);
}

[참고1] $apercent_30[$t] 했을때 아래처럼 나옵니다.

list for 첫번째
Array
(
    [0] => 75
    [1] => 40
    [2] => 17
)
list for 두번째
Array
(
    [0] => 75
    [1] => 40
    [2] => 45
    [5] => 40
)

 

[참고2] $apercent_30[] 했을때 아래처럼 나옵니다.

list for 첫번째
Array
(
    [0] => 75
    [1] => 40
    [2] => 17
)
list for 두번째
Array
(
    [0] => 75
    [1] => 40
    [2] => 17
    [3] => 45
    [4] => 40
)

 

정확한 값은 아래처럼 나와야합니다.

list for 첫번째
Array
(
    [0] => 75
    [1] => 40
    [2] => 17
)
list for 두번째
Array
(
    [0] => 45
    [1] => 40
)

이 질문에 댓글 쓰기 :

답변 1

당연히 지금은 루프가 돌면서

$apercent_30 배열이 추가추가 되니까 한번에 출력되는거 같습니다.

unset으로 배열을 비워줘야 할듯합니다.


for ($i=0; $i<count($list); $i++) {
    for ($t = 0;  $t < count($awr_body_28); $t++) {
        $awr_body_28_c = explode("-",$awr_body_28[$t]);
        if($awr_body_28_c[3]){
            if($awr_body_28_c[4]){
                $aval_28 = $awr_body_28_c[3] - $awr_body_28_c[4];
            } else {
                $aval_28 = $awr_body_28_c[3] - $awr_body_28_c[2];
            }
            $afull_28 = $awr_body_28_c[3];
            $apercent_28 = $aval_28 / $afull_28 * 100;
            $apercent_29 = sprintf("%.0f", $apercent_28);
            $apercent_30[$t] = $apercent_29;
            //$apercent_30[] = $apercent_29; 이거도안되고
            //echo $apercent_29; 여기에 출력하면 아래처럼 정확한 값이 나온다.
            // list for 첫번째 754017 정상
            // list for 두번째 4540 정상
        }
        // 값이 제대로 안나옵니다.
        print_r2($apercent_30);
        unset($apercent_30); // 배열을 초기화한다.
    }
}

추가로 해당 루프 아래에
배열을 선언하시는것도 나을거같습니다.
만약 if 조건에 맞지않아서 배열이 안생기면
unset시 빈 배열을 초기화하는건 또 맞지 않는 코드니까요


$apercent_30 = array(); // 빈 배열 선언
$awr_body_28_c = explode("-",$awr_body_28[$t]);

답변을 작성하시기 전에 로그인 해주세요.
전체 59,285
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT