2010-06-13 9 views
1

PHP에서 if()을 사용하지 않고 PHP를 더 단순화 할 수있는 방법이 있습니까? 조건이 만족되면 그 자체로 $foo를 재 할당 할 수있는 방법이 있다면PHP 삼항 연산을 간소화하십시오

$foo = $bar!==0 ? $foo : ''; 

은 궁금했다. JavaScript에서이 작업을 수행하는 방법이 있다는 것을 알고 있습니다 (& &, 맞습니까?). PHP에서이 작업을 수행 할 수있는 방법이 있는지 궁금합니다.

+4

왜 더 단순하게이 제품을 원하십니까? 그가 이와 같은 것을 발견 할 때마다 코드 검색을 유지할 가난한 사람을 원하십니까? 나는하지 않을 것이다. –

+0

투표, 좋은 지적 Jan – Obay

+2

또한 그 의견에 대한 upvote, @ Jan. 'if ($ bar == 0) $ foo = '';'는 3 진수만큼이나 간단하며 자체 할당을 필요로하지 않으며 실제로 더 읽기 쉽습니다. – paxdiablo

답변

5

그래, PHP에서도 논리 연산자 (&&)를 사용할 수 있습니다.

$bar === 0 && $foo = ''; 
+0

이 방법에 대한 설명서가 있습니까/자습서가 있습니까? 나는 그것을 사용했지만 결코 완전히 이해하지 못했다. –

+2

@Kerry'if ($ foo && $ bar)'와 동일합니다. 변수 나 값 대신'if ($ foo == 0 && $ bar = 'baz')'와 같이 전체 식을 넣을 수 있습니다. 그러나'if()'표현식에서 사용할 필요는 없습니다. '&&'는 단락 연산자입니다. 즉, 처음 절반이'false'이면 후반을 평가하지 않습니다. 그래서'$ foo = '''는'$ bar === 0'에서만 살펴보고 실행됩니다. – deceze

+0

와우, 훌륭한 설명, 고마워요 :) –

9

PHP 5.3에서는 짧은 형식의 삼자 연산자가 마침내 도착 했으므로 다음 작업을 수행 할 수 있습니다.

$foo = $bar ?: ''; 

the Comparison Operators 섹션을 참조하십시오 - "PHP 5.3 있기 때문에,이 삼항 연산자의 중간 부분을 생략 할 수 표현식은 expr1을 :은 expr1 expr3를, 그렇지 않으면 TRUE로 평가하고, 경우 expr3를 반환 EXPR1.?."

+0

코드는 op가 요구 한 것을하지 않으며 여기에 짧은 삼항 연산자를 활용할 수있는 방법이 없습니다. – Furgas