回答:
ドキュメントから:
Coalesce equalまたは?? = operatorは代入演算子です。左側のパラメーターが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';
したがって、値がまだ割り当てられていない場合は、基本的に値を割り当てるための省略形です。
で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';
これが機能しない1つのケースは、別の変数に値を割り当てようとしているため、この新しいオプションを使用できない場合です。そのため、これは歓迎されますが、いくつかの限られた使用例があるかもしれません。
ヌル合体代入演算子は、ヌル合体演算子の結果を代入する簡単な方法です。
公式リリースノートの例:
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
The folloving lines...