이 코드 줄일 수 있는 방법이 있을까요?

이 코드 줄일 수 있는 방법이 있을까요?

QA

이 코드 줄일 수 있는 방법이 있을까요?

본문


if ($bo_table == 'product01') {
    $gnb = "gnb02";
    $lnb = "lnb01";
    $lnbSub = "lnbSub01";
}
if ($bo_table == 'product02') {
    $gnb = "gnb02";
    $lnb = "lnb01";
    $lnbSub = "lnbSub02";
}
if ($bo_table == 'product03') {
    $gnb = "gnb02";
    $lnb = "lnb01";
    $lnbSub = "lnbSub03";
}
if ($bo_table == 'product04') {
    $gnb = "gnb02";
    $lnb = "lnb02";
    $lnbSub = "lnbSub01";
}
if ($bo_table == 'product05') {
    $gnb = "gnb02";
    $lnb = "lnb02";
    $lnbSub = "lnbSub02";
}
if ($bo_table == 'product06') {
    $gnb = "gnb02";
    $lnb = "lnb02";
    $lnbSub = "lnbSub03";
}
if ($bo_table == 'product07') {
    $gnb = "gnb02";
    $lnb = "lnb03";
    $lnbSub = "lnbSub01";
}
if ($bo_table == 'product08') {
    $gnb = "gnb02";
    $lnb = "lnb03";
    $lnbSub = "lnbSub02";
}
if ($bo_table == 'product09') {
    $gnb = "gnb02";
    $lnb = "lnb04";
}
if ($bo_table == 'product10') {
    $gnb = "gnb02";
    $lnb = "lnb04";
}
if ($bo_table == 'product11') {
    $gnb = "gnb02";
    $lnb = "lnb05";
}
if ($bo_table == 'product12') {
    $gnb = "gnb02";
    $lnb = "lnb06";
}
if ($bo_table == 'product13') {
    $gnb = "gnb02";
    $lnb = "lnb07";
}

 

 

위처럼 쓰인 코드인데 반복적으로 들어가는 부분들을 합쳐서 간결하게 하고 싶은데 어떻게 해야 할까요?

이 질문에 댓글 쓰기 :

답변 5

방법이 없습니다. 기본적으로 비선형적인, 그러니까 일반적인 계산으로는 나오지가 않는 방식이라서 정 간결하게 하려면 배열을 쓰시는 수밖에 없습니다.

 

 

else if로 표현하시는 게 속도가 더 좋을 듯 합니다. (코드를 더 넣으셔야.ㅎㅎ)

위처럼 하면 페이지 접속할 때마다 모든 if문을 읽지만,

else if로 표현하면 맞는 곳까지만 읽고 그 다음 조건은 무시하고 넘어가서 속도가 더 빠릅니다.

사람이 그 차이를 느낄지는 잘 모르겠지만.... ㅡㅡ;


$navigation = array(
    'product01'=>array(
        'gnb'=>'gnb02'
        , 'lnb'=>'gnb02'
        , 'lnbSub'=>'lnb01'
    ), 'product02'=>array(
        'gnb'=>'gnb02'
        , 'lnb'=>'lnb01'
        , 'lnbSub'=>'lnbSub02'
    )
);
if($bo_table != ''){
    $gnb = isset($navigation[$bo_table]['gnb']) ?$navigation[$bo_table]['gnb'] : '';
    $lnb = isset($navigation[$bo_table]['lnb']) ?$navigation[$bo_table]['lnb'] : '';
    $lnbSub = isset($navigation[$bo_table]['lnbSub']) ?$navigation[$bo_table]['lnbSub'] : '';
}

 

저는 이렇게 씁니다.

bo_table 대신 gr_id 로 변경하여 쓸 수도 있습니다.

extend 폴더 내에 파일 하나 생성해서 위와 같이 관리하면, 굳이 개발자가 아니여도 디자이너나 퍼블리셔가 쉽게 변경하거나 추가하여 쓸 수 있습니다.

function doAction(str,sq) {
    switch (str) {
    case "coverEdit":
        coverEdit(sq);
        break;        
        
    case "coverInsert":
        coverInsert();
        break;
        
    case "insert":        //입력실행ajax
        coverInsertAjax();
        break;            

    case "edit":        //수정실행ajax
        coverEditAjax();
        break;            

    case "preview":    //alert(sq);
        CoverPreview(sq);
        break;
        
    case "delete":
            fncDeleteAll();
            break;        
    }

 

이런식으로 하시든지요?

<?php
if(strpos($bo_table,'product') !== false){
    $gnb = 'gnb02';
    $no = preg_replace("/[^0-9]*/s", "", $bo_table);
    $arr = array("01" => "01,01","02" => "01,02","03" => "01,02","09" => "04,");

// 빈 product07 => "07" => "03,01" , 앞은 lnb, 뒤는 lnbsub
    $tarr = explode(',',$arr[$no]);
    if($tarr[0] != '') $lnb = 'lnb'.$tarr[0];
    if($tarr[1] != '') $lnbSub = 'lnbSub'.$tarr[1];
}

이런식으로 할 수 있지 않을까요 ?

해보지는 않아서 잘 될지는 모르겠어

arr 에 배열을 넣는 방법이네요

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

회원로그인

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