이 코드 줄일 수 있는 방법이 있을까요?
본문
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 에 배열을 넣는 방법이네요