programing

Null 병합 할당이란 무엇입니까?PHP 7.4의 연산자

lastmoon 2023. 8. 20. 12:28
반응형

Null 병합 할당이란 무엇입니까?PHP 7.4의 연산자

PHP 7.4 기능에 대한 비디오를 보고 이 새로운 기능을 보았습니다.??=교환입니다.나는 이미 알고 있습니다.??교환입니다.

이게 뭐가 달라요?

문서에서:

병합 동등 또는 ?=는 할당 연산자입니다.왼쪽 매개 변수가 null인 경우 오른쪽 매개 변수의 값을 왼쪽 매개 변수에 할당합니다.값이 null이 아니면 아무 것도 수행되지 않습니다.

예:

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

따라서 기본적으로 이전에 할당되지 않은 값을 할당하는 것은 간단한 방법입니다.

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

공식 릴리스 노트의 예는 다음과 같습니다.

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

Null 병합 할당 연산자 체인:

$a = null;
$b = null;
$c = 'c';

$a ??= $b ??= $c;

print $b; // c
print $a; // c

예: 3v4l.org

예제 문서:

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

이를 통해 루프의 첫 번째 반복 중에 변수를 초기화할 수 있습니다.하지만 조심하세요!

$reverse_values = array();
$array = ['a','b','c']; // with [NULL, 'b', 'c'], $first_value === 'b'
foreach($array as $key => $value) {
  $first_value ??= $value; // won't be overwritten on next iteration (unless 1st value is NULL!)
  $counter ??= 0; // initialize counter
  $counter++;
  array_unshift($reverse_values,$value);
}
// $first_value === 'a', or 'b' if first value is NULL
// $counter === 3
// $reverse_values = array('c','b','a'), or array('c','b',NULL) if first value is null

첫 번째 값이 다음과 같은 경우NULL,그리고나서$first_value다음으로 초기화됩니다.NULL그리고 다음 비-에 의해 덮어쓰게 됩니다.NULL값. 배열에 많은 양이 있는 경우NULL가치,$first_value둘 중 하나로 끝날 것입니다.NULL또는 첫 번째 비 -NULL지난번 이후에NULL그래서 이것은 끔찍한 생각인 것 같습니다.

저는 여전히 이것이 더 명확하기 때문에 이런 것을 하는 것을 선호하지만, 또한 그것이 작동하기 때문입니다.NULL배열 값으로:

$reverse_values = array();
$array = ['a','b','c']; // with [NULL, 'b', 'c'], $first_value === NULL
$counter = 0;
foreach($array as $key => $value) {
  $counter++;
  if($counter === 1) $first_value = $value; // does work with NULL first value
  array_unshift($reverse_values,$value);
}

대략 "$a defaults to $b"로 번역할 수 있습니다.

$page ??= 1;            //  If page is not specified, start at the beginning
$menu ??= "main";       //  Default menu is the main menu
$name ??= "John Doe";   //  Name not given --> use John Doe

PHP의 세계에서 오랫동안 기다려온 도구.
PHP 7.4 이전에는 다음과 같은 기능을 사용했습니다.

function defaultOf(&$var, $value) {
    if(is_null($var)) $var=$value;
}

// Now the 3 statements above would look like:

defaultOf( $page, 1 );
defaultOf( $menu, "main" );
defaultOf( $name, "John Doe" );

(더 읽기 쉽기 때문에 지금도 사용하고 있습니다.

언급URL : https://stackoverflow.com/questions/59102708/what-is-null-coalescing-assignment-operator-in-php-7-4

반응형