2016-09-07 1 views
0

내가 변수의 값을 기준으로 올바른 결과를 표시하기 위해 노력하고있어하지만 짧은 손을 사용하고, 다음하지만 첫 번째를 무시하는 것 값이 정확하더라도 점검하십시오.PHP는 중첩 된 IF 내가 시도</p> <p>ELSE 짧은 손

(!empty($national_ID_number)) ? 
    $national_ID_number : 
    (!empty($foreign_ID_number)) ? 
     $foreign_ID_number : 
     $temporal_permit_number) 

감사

+0

PHP Operator precedence 당신은 아마도 사용 된 모든 변수의 VAR 덤프를 게시 할 수 있을까요? – Ikari

+6

여러 조건을 사용할 때 단문 if/else 구문이 명확하지 않습니다. 예상대로 왼쪽에서 오른쪽으로 이동하지 않습니다. 이 경우 표준 if/else 조건을 사용하는 것이 좋습니다. 그렇지 않으면 대괄호를 사용하여 각 조건의 우선 순위를 예상 한대로 강제해야합니다. –

+0

영주. 이와 같은 코드를 작성하지 마십시오. 동료 인간의 눈을 피로하게 만듭니다. 중첩 된 두 개의 if()로 분해하십시오. 삼항 연산자는 세그먼트 당 하나의 항목에 대해서만 유효합니다 (기술적으로는 아니지만 실제적인 문제로). –

답변

1

그것은이 코드를 제대로 나를 위해 채우는 것, 당신은 추가 브래킷을 추가 한 것으로 보인다.

$national_ID_number = ''; 
$foreign_ID_number = 2; 
$temporal_permit_number = 3; 
$finalID = (!empty($national_ID_number)) ? $national_ID_number : (!empty($foreign_ID_number) ? $foreign_ID_number : $temporal_permit_number); 
echo $finalID; 
0

난 그냥 조금 깊은 연구에 들어갑니다 - 분명히 각 조건은 괄호 안에 있어야하고 아래의 수정이 잘 작동합니다.

(!empty($national_ID_number)) ? 
    $national_ID_number : 
    ((!empty($foreign_ID_number)) ? 
     $foreign_ID_number : 
     $temporal_permit_number)); 

Reference

+0

* 방금 조금 깊은 연구를했습니다. * 질문하기 전에해야 할 일입니다. – Rizier123

관련 문제