2012-11-22 4 views
5

PHP 5.3 이후, 상기 운전자 원의 중간 부분을 생략 할 수있다. 표현식 expr1? : expr3은 expr1이이 TRUE로 평가되면 expr1을 반환하고 그렇지 않으면 expr3을 반환합니다.더 간단한 방법으로 기본값을 설정할 수 있습니까?

변수의 기본값을 설정하는 코드를 따르는 것보다 더 좋고 간결한 방법이 있습니까?

$v = isset($v) ? $v : "default value"; 

답변

2

짧은 구문입니다 수 있습니다 사용한다 : $ v`이 이미 설정되어

isset($v) || $v="default value"; 
0

아니요. $v이 설정되었는지 여부를 알지 못하는 경우 올바른 방법입니다.

0

없음 갈께 당신은 삼항 연산자를 사용합니다.

6

TL; DR - 그런식이 임의 짧게 할 수 없다. 단축 삼항 표현이 암시 isset()을 수행하는

은 당신이 원하는 것은입니다. 이 내용은 mailing list에서 논의되었으며 그 개념을 다루는 ifsetor RFC이 작성되었습니다.

// PROPOSAL ONLY, DOES NOT WORK 
$v = $v ?? 'default value'; 

지정 'default value' 경우 $v이 정의되지 : 단축 삼항 연산자는 이미 위의 논의의 시간에 존재하기 때문에

, 이런 일이 존재하지 않는 연산자 ??를 사용하여 proposed했다.

그러나,이 같은 아무것도 현재까지 주요 언어로 구현되지 않았다. 그때까지, 당신이 쓴 것은 더 짧아 질 수 없습니다.

끔찍한 구조는 짧은,하지만 변수가 존재하는 경우는 기본 값을 할당하기 때문에이 동일하지있어주의하지만 false로 평가

// DO NOT USE 
$v = @$v ?: 'default value'; 
+1

어떤 '경우가 있으며' '' '입니다 또는 '0'또는 'null'또는 'false'? – Carlos

+1

나는 본다. 그러나 나는 그것이 좋은 접근이라고 생각하지 않는다 ... – Carlos

+1

@jackflash 따라서 "끔찍한 구조"에 대한 나의 언급 –

2

그냥 this 물어 여기에 지적되었다 . 그래서 경우에 당신은 arraykey이이 개선

다음
function isset_get($array, $key, $default = null) { 
    return isset($array[$key]) ? $array[$key] : $default; 
} 
관련 문제