Odpowiedzi:
Z dokumentów :
Koalescencja równa lub operator = = jest operatorem przypisania. Jeśli lewy parametr ma wartość null, przypisuje wartość prawego parametru do lewego. Jeśli wartość nie jest równa null, nic się nie dzieje.
Przykład:
// 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';
Więc jest to po prostu skrót do przypisania wartości, jeśli nie została wcześniej przypisana.
W PHP 7 została ona pierwotnie wydana, umożliwiając programistom uproszczenie kontroli isset () w połączeniu z operatorem trójskładnikowym. Na przykład przed PHP 7 możemy mieć ten kod:
$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');
Kiedy PHP 7 zostało wydane, zamiast tego mogliśmy napisać to jako:
$data['username'] = $data['username'] ?? 'guest';
Jednak teraz, gdy PHP 7.4 zostanie wydane, można to jeszcze bardziej uprościć:
$data['username'] ??= 'guest';
Jednym z przypadków, w którym to nie działa, jest próba przypisania wartości do innej zmiennej, więc nie można użyć tej nowej opcji. W związku z tym, choć jest to mile widziane, może istnieć kilka ograniczonych przypadków użycia.
Operator zerowania koalescencji jest skrótowym sposobem przypisywania wyniku operatorowi zerowania koalescencji.
Przykład z oficjalnych informacji o wersji :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
The folloving lines...