【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)
?>

終わりに

基本形で書いてほしい。

php, programming

Posted by 異世界攻略班