2014-10-08 3 views
2

나는 이것에 대해 어떤 논의도 찾지 못할 것 같다. 자바 스크립트에서 PHP, 왜? : 연산자를 사용하지 않는 이유는 무엇입니까?

뭔가가 존재하는지 확인하고, 이렇게하지 않을 경우 기본값을 사용합니다 :

내가 이해에서 PHP에서
var myvariable = mysetting || 3 

이 같은 일이 같은 수행 할 수 있습니다

$myvariable = $mysetting ?: 3; 

나는 완전히 이것을 벗어 났습니까? 나는 isset()not_empty()과 그 모든 것을 사용하지 않는 것의 의미를 이해합니다.하지만 변수가 있는지 알고 싶다면 true를 사용해야합니다. 그렇지 않으면 기본값을 사용합니다. 이 구문에 숨겨진 나쁜 점이 있습니까?

+0

'var myvariable = mysetting || 3 '은 내 의견을 원한다면 더러운 속임수입니다. – Sebas

+0

삼항 연산자는 PHP에서 오랫동안 사용되어 왔지만'? :'바로 가기는 5.4 또는 그 이후부터 사용 가능했습니다. –

+1

@JayBlanchard 이것은 다음 페이지에서 말하는 것입니다 : PHP 5.3부터는 3 진 연산자의 중간 부분을 생략 할 수 있습니다. 표현식 expr1? : expr1은 expr1이 TRUE이면 expr1을, 그렇지 않으면 expr3을 반환합니다. – Gisheri

답변

2

때문에 작동하지 않습니다. 이 코드는 여전히 PHP 설정에 따라 사용자에게 표시 될 수있는 알림 Notice: Undefined variable: mysetting in C:\wamp\www\x.php on line을 표시합니다. 그것은 별개로 작동 할 것입니다. 주의 사항이 표시되지 않으면 최종 결과가 올바른 것입니다.

그래서, 당신은 정말 기능이 있지만, 언어 구조 아니며, 특히이 검사 할 수 있도록 설계되어, isset을 사용할 수 있습니다 그 중 하나 둘러 보는 :

$myvariable = isset($mysetting)? $mysetting: 3; 

을 또는 당신은 억제 할 수 있습니다 @ 연산자를 사용하여주의 사항 :이 특정 사건에 대한

$myvariable = @$mysetting ?: 3; 

는, 어쩌면 허용하지만 일반적으로 @의 사용은 많은 눈살을 찌푸리게한다. 개인적으로, 나는 오히려 한 쌍 더 특성을 이용하고 그것을보다 적게 "더럽"느끼게한다, 그러나 의견의 사정이다.

사람들이 사용하지 않는 또 다른 이유는 상대적으로 새로운 것입니다 (PHP 5.3). 모든 사람이이 새로운 구문을 알고 있거나 그것에 익숙하지 않을 수 있습니다. 그들은 수년간 isset에 익숙해 져 왔고, 오래된 습관은 많이 죽습니다.

+0

'$ myvariable = @ $ mysetting? : 3;' –

+3

당신은 notice @ DávidHorváth를 단지 억압하고 있습니다. 이것은 정말 나쁜 습관입니다. –

+0

@JayBlanchard 좋은 습관은 아닙니다, 나는 당신에게 동의합니다. –

0

이러한 진술은 동일하지 않습니다. 내가 찾은 바로는 자바 스크립트가하는 것과 같습니다

if (!mysetting) { 
    myvariable = 3; 
} else { 
    myvariable = mysetting; 
} 

삼항 연산자를 사용하여 해당 PHP 문이 될 것이다 반면 : 일명

$mysetting = isset($myvariable) ? $myvariable : 3; 

:

if(isset($myvariable)) { 
    $mysetting = $myvariable; 
} else { 
    $mysetting = 3; 
} 

삼항 연산자는 본질적으로 for 및 if/else 문과 첫 번째 피연산자는 논리적 표현으로 해석됩니다.

관련 문제