테스트 사이트 - 개발 중인 베타 버전입니다

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

minimar0 6년 전 조회 3,172

</p>

<p>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";

}</p>

<p>

 

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

잉끼s
6년 전

</p>

<p>$navigation = array(

    'product01'=>array(

        'gnb'=>'gnb02'

        , 'lnb'=>'gnb02'

        , 'lnbSub'=>'lnb01'

    ), 'product02'=>array(

        'gnb'=>'gnb02'

        , 'lnb'=>'lnb01'

        , 'lnbSub'=>'lnbSub02'

    )

);</p>

<p>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'] : '';

}</p>

<p>

 

저는 이렇게 씁니다.

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

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

razogol
6년 전

<?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 에 배열을 넣는 방법이네요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

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;        
    }

 

이런식으로 하시든지요?

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

s
sinbi Expert
6년 전

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

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

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

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

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

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인