여러조건 switch문 문의

여러조건 switch문 문의

QA

여러조건 switch문 문의

본문

switch문 문의


( 여분필드 mb_1 은 성별  남성 ,여성   여분필드 mb_2는 회원나이 )

         전제조건 ,  회원의성별   ,  회원나이
 
             회원의 성별이 남자고 나이가 10살이면   20점 

            회원의 성별이 여자고 나이가 20살이면  30점

            기타는 5점


 if문은 알겟는데 스위치문이 모르겠네요
 스위치문좀 부탁드립니다
 

이 질문에 댓글 쓰기 :

답변 4

조건 2개를 비교하는 거면 당연히 if문이 쉽죠

스위치 문으로 하려면 이중 스위치를 해야되서 복잡하죠 

 

근데 질문이 스위치문으로 해달라는 거였기 때문에 스위치문으로 작성해드렸고요 

 

조건문이 천개가 되더라도 

if 문과 스위치 문의 속도는 거의 비슷합니다 (조건이 단일이고 비교해야 하는 항목(case) 가 많을경우

jump 형식인 스위치가 물론 조금더 빠르지만

 

그 빠름이 속도에 월등한 차이가 있거나 할 정도로 크리티컬 한 것도 아니고요 

 

이런것보다 조건이 많아진다면 해당 조건을 줄일수있게 설계에 신경을 쓰시는게 더 좋을꺼 같습니다

 

 

쉽게 이해하려 조건2개인데 서너개될수도있어 스위치문은 안되겟네요
그리고 저렇게 단안하기 쉽지 않은데 대단하세요,
검색등 외부 많이 뒤지고 며칠조사햇거든요
조금차이난다해도 익숙한 이프문가기로 했습니다
바쁘신데 BiHon 님도 많은도움되엇어요 채택은 코딩이 아니고,,선택부분땜에
다른분해드린거 이해부탁드립니다 2002 블랙호랑이해 건승하십시요 감사합니다.

많은 조건을 예로 들었는데 속도에 민감한 곳이라면 조건 정리를 통해
조건 분기를 최대한 효율적으로 줄여야죠.
값이 모두 정해진 경우 if / else if문에서의 논리 연산이야 괜찮지만,
조건문에 함수를 호출해 결과값을 구하는 등의 추가 동작이 있다면 경우에 따라 느려질 수 있죠.
단순하게 switch문이 빠르다고, 무조건 switch문을 사용한다? → X
댓글에 예로 들었지만 비슷한 방식으로 불필요한 조건을 제거할 수 있습니다.

조건이 2가지인데, 굳이 switch문을 사용해야 할 이유가 있나요?

알겠다는 if문을 그냥 사용하는 것이 낫겠는데요.


if ( $mb_1=='남성' && $mb_2==10 ) {
    // 20
} else if ( $mb_1=='여성' && $mb_2==20 ) {
    // 30
} else {
    // 5
}
// 굳이 switch문을 사용하겠다면 아래처럼 처리하는 방법도 있습니다.
switch ( $mb_1.$mb_2 ) { // 문자열 결합
    case '남성10':
        // 20
        break;
    case '여성20':
        // 30
        break;
    default:
        // 5
}

<?php
$mb_1 = "woman";
$mb_2 = 20;
$result = 0;
 
switch ($mb_1) {
    case "man" :
        switch ($mb_2) {
            case 10 :
                $result = 20;
                break;
            default    : 
                $result = 5;
                break;
        }
        break;
    case "woman" :
        switch ($mb_2) {
            case 20 :
                $result = 30;
                break;
            default    : 
                $result = 5;
                break;
        }    
        break; 
    default    : 
        $result = 5;
        break;
}
 
echo $result;
?>

switch문 내의 switch문에서 break 2; 하면 곧바로 벗어나요.
중첩 사용을 하더라도 불필요한 부분을 줄이면 좀 낫겠죠?
참고로 추가합니다.


<?php
$mb_1 = 'woman'; // 해석이 필요없는 문자열은 '로 감싸주면 좋아요.
$mb_2 = 20;
$result = 5; // 기본값. 아래 조건에 맞을 때만 해당 값 할당

switch ($mb_1) {
    case 'man' :
        switch ($mb_2) {
            case 10:
                $result = 20;
                break 2;
        }
        break;
    case 'woman' :
        switch ($mb_2) {
            case 20:
                $result = 30;
                break 2;
        }
        break;
}

echo $result;

네이버 검색하다 안되서

스위시문에서 if문처럼 &&  (AND) 로  

$mb_1=='남성' && $mb_2==10  시작함 편한데 안되나요?

위스위치문대로함 이프문처럼 너무 복잡할텐데요

 

제시한 조건은 두개인데

조건이 사실 많아서 조사하다보니 스위치문은 점프한다해 속도가 조금더 낳지 않을까해서요

$mb_2==10 일때..입니다, 이프문처럼,스위치문구조를 몰라 ..
이프문 스위치문  양은 같아도 스위치문은 해당조건 점프한다해
조건이 천개일경우 일일히 내려가는 이프문보다 아무래도 빠를듯해서요

"성별"과 "나이"로 두 개의 값이기 때문에 위쪽 댓글처럼 switch 이중으로 사용하거나,
문자열 결합으로 한번에 처리하면 되겠습니다. (오타 수정해놨어요.)

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

회원로그인

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