PHP 5.3 이후, 상기 운전자 원의 중간 부분을 생략 할 수있다. 표현식 expr1? : expr3은 expr1이이 TRUE로 평가되면 expr1을 반환하고 그렇지 않으면 expr3을 반환합니다.더 간단한 방법으로 기본값을 설정할 수 있습니까?
변수의 기본값을 설정하는 코드를 따르는 것보다 더 좋고 간결한 방법이 있습니까?
$v = isset($v) ? $v : "default value";
PHP 5.3 이후, 상기 운전자 원의 중간 부분을 생략 할 수있다. 표현식 expr1? : expr3은 expr1이이 TRUE로 평가되면 expr1을 반환하고 그렇지 않으면 expr3을 반환합니다.더 간단한 방법으로 기본값을 설정할 수 있습니까?
변수의 기본값을 설정하는 코드를 따르는 것보다 더 좋고 간결한 방법이 있습니까?
$v = isset($v) ? $v : "default value";
짧은 구문입니다 수 있습니다 사용한다 : $ v`이 이미 설정되어
isset($v) || $v="default value";
아니요. $v
이 설정되었는지 여부를 알지 못하는 경우 올바른 방법입니다.
없음 갈께 당신은 삼항 연산자를 사용합니다.
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';
그냥 this 물어 여기에 지적되었다 . 그래서 경우에 당신은 array
의 key
이이 개선
function isset_get($array, $key, $default = null) {
return isset($array[$key]) ? $array[$key] : $default;
}
어떤 '경우가 있으며' '' '입니다 또는 '0'또는 'null'또는 'false'? – Carlos
나는 본다. 그러나 나는 그것이 좋은 접근이라고 생각하지 않는다 ... – Carlos
@jackflash 따라서 "끔찍한 구조"에 대한 나의 언급 –