2013-09-05 2 views
0

세 연산자를 사용하여 $x을 어떻게 증분 할 수 있습니까?PHP 삼항 연산자로 값 올리기

나는 $x = $x==2 ? 0 : ++;을 시도했지만 분명히 작동하지 않았습니다.

if($x == 2){ 
    $x=0; 
}else{ 
    $x++; 
} 

감사합니다.

답변

9

여기에서 사전 증가를 사용하려고합니다.

$x = ($x==2) ? 0 : ++$x; 

Demo!

+0

왜 $ x ++가 작동하지 않습니까? 설명을 찾을 수 없습니다 ... 사전 증가가 작동하고 게시 증분이 어떻게 될 수 있습니까? – greg

+0

@ 집합 :'++ $ x'는 값을 증가시킨 후'$ x'에 할당하고'$ x ++'는'$ x'를 먼저 할당하고 *는 * 값을 증가시킵니다. –

+0

답변을 주셔서 감사합니다,하지만 난 아직도 그것을 얻을 수 없어 ... 두 경우 모두 두 가지 작업을 수행합니다. $ x == 2가 false라는 것을 알았 기 때문에$ x ++를 실행하면 $ x = 1이 할당되고 값이 증가하므로 $ x = 2 ... 끝에 있습니다. 나는 여전히 $ x = 2를 가져야 만한다. ++ $ x는 값을 2로 증가시키고 $ x에 할당 할 것이다. 그럼 다시, $ x = 2입니다. 다음과 같은 경우 ++ $ y와 $ y ++의 차이를 이해할 수 있습니다 : $ x = ($ x == 2)? 0 : $ y ++ => $ x = 1 및 $ y = 2 $ x = ($ x == 2)? 0 : ++ $ y => $ x = 2 and $ y = 2 – greg

7

할 수있는 가장 좋은 방법이 될 것이다 :

$x = $x === 2 ? 0 : $x+1; 

당신이 주장하면 바로 VAR 증가하는 원을 사용하여 :

$x += $x === 2 ? $x*(-1) : 1;//or hard-code -2 instead of $x*(-1) 

을 이 경우 1을 $x에 추가하거나 012를 추가합니다.에서 $ x ($x + (-$x)은 0)입니다. 그러나 전체적으로, 나는 (특히 PHP에서) 가능한 한 많은 것을 피해야한다고 덧붙이고 싶다. 이 경우, 서면 :

if (++$x === 3) 
{ 
    $x = 0; 
} 

정확히 같은 일을,하고 많은 더 좋은 보는가하지만,하지 훨씬 더 코드입니다. 그럼에도 불구하고, if 문에서 증가 미리 최선의 증가, 여전히 혼란, 또는 :

$x = $x === 2 ? -1 : $x; 
$x++; 

당신은 ternaries에 대한 이상한 취향을 가지고있어 ... 그리고 가있는 경우이 액형로 라이너 :

$x = ($x ===2 ? -1 : $x) +1; 

작품, 너무 ...하지만

+0

코드 골프 사이트에 대해 알려 주셔서 감사합니다. – user933791

-2

왜 그것을 위해 모듈 연산자를 사용하지 않는 ... 사물의 이러한 종류의 code-golfing site있다?

$x = ++$x % 2; 
+0

OP의 코드에서'$ x = ++ $ x % 3'을 원한다면 x는 0,1,2가 될 수 있습니다. –

+0

실제로'x'가 다른 곳의 어딘가에 3을 설정하면이 모듈러 연산자는 다른 결과를 줄 것입니다. 그러나 그것은 OP가 실제로 원하는 것 (로직의 버그 일 수 있습니다!)에 이릅니다. –