【PHP】「??=」の正体 PHP
初見だと?となるが、Null合体演算子だと分かる。
Null合体演算子
基本の形。$aがnullでないならそのまま返し、nullなら第二オペランドの文字列を返す。
$a = null;
$b = $a ?? 'nullです';
??= php nullとかで検索しても出ない
リファレンスのコメントに以下のコードがある。
function nullOrDefault($x = null)
{
$x ??= 3222;
return $x;
}
これを使って遊んでみる。
<?php
function nullOrDefault($x = null)
{
$x ??= 100;
return $x;
}
$w['hoge'] = 200;
$a = 1;
$b = "";
$c = 0;
$d = null;
$e = "ok";
$x = $f ?? "";
$y = $b ? $b : "";
$z ??= "zzzzz";
$w['hoge'] ??= "zzzzz";
var_dump(nullOrDefault($a));//int(1)
var_dump(nullOrDefault($b));//string(0) ""
var_dump(nullOrDefault($c));//int(0)
var_dump(nullOrDefault($d));//int(100)
var_dump(nullOrDefault($e));//string(2) "ok"
var_dump(nullOrDefault($x));//string(0) ""
var_dump(nullOrDefault($y));//string(0) ""
var_dump(nullOrDefault($z));//string(5) "zzzzz"
var_dump(nullOrDefault($w));//array(1) {["hoge"]=> int(200)}
var_dump(nullOrDefault());//int(100)
?>
終わりに
基本形で書いてほしい。