Deprecated:関数 print_emoji_styles は、バージョン 6.4.0 から非推奨になりました ! 代わりに wp_enqueue_emoji_styles を使用してください。 in /var/www/vhosts/w16609.ws.domainking.cloud/mudabukuro.miracle-dance.com/wp-includes/functions.php on line 6085

NULL合体演算子・NULL判定関数の値

perl を使ってたころは「未定義」に関してあまり意識しなかったのですが、
php では、null と未定義の違いがチェックされ、wordpress でdebug=true にすると、警告エラーがでてくるので
確認の意味で....

とりあえず、if( $ver )で、未定義の警告エラーが出るときは、
if( isset( $var ) ) の代わりに、if( $var??null ) とかやっても、
警告エラーの回避が出来そうですね。

NULL合体演算子

$a=null; var_dump($a??"***")

string(3) "***"

var_dump($b??"***")

string(3) "***"

$c=""; var_dump($c??"***")

string(0) ""

$d=0; var_dump($d??"***")

int(0)

$e=[]; var_dump($e??"***")

array(0) { }

$f["x"]=5; var_dump($f["y"]??"***")

string(3) "***"

$f[1]=6; var_dump($f[$x??1])

int(6)

$h=false; var_dump($h??"***")

bool(false)

var_dump($i??$j??$k??"***")

string(3) "***"

$k=8; var_dump($i??$j??$k??"***")

int(8)

$j=7; $k=8; var_dump($i??$j??$k??"***")

int(7)

var_dump( 1, "1", null, false, true )

int(1) string(1) "1" NULL bool(false) bool(true)

$array = explode ( "&", "aaa=111&bbb=&ccc=333&ggg&ddd=444&" ); foreach( $array as $str ){ $xxx = explode( "=", $str ); $hash[ $xxx[0]] = $xxx[1]??null; // ※1 } var_dump( $hash );

※1 gggの値が未定義になるのを、?? で NULLに置き換え
bbb= は、なにもしなくても、空白になります
array(6) { ["aaa"]=> string(3) "111" ["bbb"]=> string(0) "" ["ccc"]=> string(3) "333" ["ggg"]=> NULL ["ddd"]=> string(3) "444" [""]=> NULL }
※注記:以下のように list()で分割すると 未定義エラーになる。
foreach( $array as $str ){
 	list( $key, $value ) = explode( \'=\', $str );
	$hash[ $key ] = $value;
};

$hash["zzz"] が未定義の時・・・ if( $hash["zzz"] )→未定義なのでエラー; if( $hash["zzz"] ??"" )→空白変換で「偽」; if( $hash["zzz"] ??null )→NULL変換で「偽」

string(0) "" NULL

NULL判定関数

null判定表
$hoge isset($hoge) empty($hoge) is_null($hoge) $hoge == null $hoge === null
宣言なし bool(false) bool(true) bool(true) bool(true) bool(true)
初期値なし bool(false) bool(true) bool(true) bool(true) bool(true)
0 bool(true) bool(true) bool(false) bool(true) bool(false)
"" bool(true) bool(true) bool(false) bool(true) bool(false)
false bool(true) bool(true) bool(false) bool(true) bool(false)
null bool(false) bool(true) bool(true) bool(true) bool(true)
"0" bool(true) bool(true) bool(false) bool(false) bool(false)
array() bool(true) bool(true) bool(false) bool(true) bool(false)
array(5) bool(true) bool(false) bool(false) bool(false) bool(false)


※このページはテスト用です。URLを変更する可能性が高いので要注意!