PHP 7.4의 null 병합 할당 ?? = 연산자


9

다가오는 PHP 7.4 기능에 대한 비디오를 보았고이 ??=새로운 연산자를 보았습니다 . 이미 ??운영자를 알고 있습니다. 어떻게 다른가요?

답변:


10

로부터 문서 :

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';

따라서 기본적으로 값을 지정하지 않은 경우 값을 지정하는 것이 간단합니다.


4
또한 공식 문서에서 오타가 발견 된 것 같습니다. The folloving lines...
Pavel Lint

두 줄이 "같은"것을하고 있다는 것이 100 % 정확하지는 않습니다. 두 번째 경우에는 왼쪽이 한 번만 평가되므로 더 효율적입니다
the_nuts

7

에서는 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';

이것이 작동하지 않는 한 가지 경우는 다른 변수에 값을 할당하려는 경우이 새로운 옵션을 사용할 수 없습니다. 따라서 이는 환영하지만 사용 사례는 제한적일 수 있습니다.


3

널 병합 할당 연산자는 널 병합 연산자의 결과를 지정하는 간단한 방법입니다.

공식 출시 노트 의 예 :

$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
    $array['key'] = computeDefault();
}

1

예제 문서 :

$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
    $array['key'] = computeDefault();
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.