답변:
로부터 문서 :
Coalesce equal 또는 ?? = operator는 할당 연산자입니다. left 매개 변수가 널이면 오른쪽 매개 변수의 값을 왼쪽 매개 변수에 지정합니다. 값이 널이 아니면 아무 것도 수행되지 않습니다.
예:
// The folloving lines are doing the same
$this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? 'value';
// Instead of repeating variables with long names, the equal coalesce operator is used
$this->request->data['comments']['user_id'] ??= 'value';
따라서 기본적으로 값을 지정하지 않은 경우 값을 지정하는 것이 간단합니다.
에서는 PHP 7 이 원래 개발자 삼원 연산자로 결합 된는 isset () 검사를 간단히 할 수 있도록 공개되었다. 예를 들어 PHP 7 이전에는 다음 코드가있을 수 있습니다.
$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');
PHP 7 이 출시 되었을 때 대신 다음과 같이 작성할 수 있습니다.
$data['username'] = $data['username'] ?? 'guest';
그러나 PHP 7.4 가 출시되면 다음과 같이 더 단순화 될 수 있습니다.
$data['username'] ??= 'guest';
이것이 작동하지 않는 한 가지 경우는 다른 변수에 값을 할당하려는 경우이 새로운 옵션을 사용할 수 없습니다. 따라서 이는 환영하지만 사용 사례는 제한적일 수 있습니다.
널 병합 할당 연산자는 널 병합 연산자의 결과를 지정하는 간단한 방법입니다.
공식 출시 노트 의 예 :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
The folloving lines...