2013-01-25 2 views
9

잠시 동안 삼항 연산자를 사용했고 else 절없이 함수를 호출하는 방법이 있는지 궁금합니다. 예 : 다른 절 '우회'할 수 있습니다이 조건이 false를 반환하는 경우 어떻게 삼항 지금3 진 연산자. 일방적 인 행동이 가능합니까?

if(isset($foo)){ 
    callFunction(); 
} 

을 :

if(isset($foo)){ 
    callFunction(); 
}else{ 

} 

지금 분명히 우리가 확인하기 위해 else을 남길 수 있습니다?

(isset($foo))?callFunction():'do nothing!!'; 

미스터리 또는 불가능한가요?

+3

공백으로 남겨주세요. –

+1

이제 내게 어리 석다는 느낌이 들었습니다 ... lol – sourRaspberri

+0

당신은 이것을 물어볼 필요가 없습니다. 그냥 시도해보십시오. 사소한 것입니다. – markus

답변

18

단락을

isset($foo) and callFunction(); 

"는 조건을 반대로하고 생략 두 번째 인수

!isset($foo) ?: callFunction(); 

을하거나 반환 무엇인가 "

isset($foo) ? callFunction() : null; 

그러나 삼항 연산자는 두 가지 가능한 값 중에서 조건부로 값을 가져 오도록 설계되었습니다. 함수를 호출하는 중입니다. 따라서 실제로는 if을 찾고 문자를 저장하기 위해 ?:을 오용 한 것 같습니다.

if (isset($foo)) callFunction(); 
1

왜이 경우 삼항 연산자를 사용합니까? 삼항 연산자는 두 가지 가능한 시나리오가있을 때 사용하기위한 것이고 if 경우에만주의해야합니다. 당신이 그러나, 단순히 비어있는 경우 떠나지 않는에있는 경우 (cond)?do_something():;

+0

글쎄, 위의 예입니다. 나는 더 큰 운영에 대해 궁금해하고 있었다. – sourRaspberri

+0

@Beneto 큰 작업? 정말 Xernary 연산자를 오용 한 것 같습니다 : X – KingCrunch

0

콜론 뒤에 0을 넣습니다. 또한 Perl을 사용한다고 가정하면 더 나은 '조건과 행동()', '조건 일 경우의 행동()'관용구를 사용할 수 있습니다.

+0

태그에 관해서는 PHP를 사용합니다;) 그러나 표현식의 짧은 구문은 PHP에서도'$ condition과 action();'으로 작동하지만 다른 표기법에서는 작동하지 않습니다. 여기서 적어도 중괄호는 생략 할 수 있지만, 모두'if ($ condition) action();' – KingCrunch