前回はPHPについてかなり調べていましたが、C++のように初期化せずに変数を定義できるかどうか興味がありました。
このコードを実行すると、インタプリタは致命的なエラーを出力しません(変数テストが未定義であるという通知のみ)。
<?php
$test = (int) $test;
?>
そして、var_dump()関数でチェックしようとすると、次のようになります。
int(0)
インタプリタがundefinedを整数に自動的にキャストすると仮定しました。まあ、それはかなり賢いです。しかし、型キャストに対応するコードを削除し、var_dump()関数でチェックすると、次のようになります。
NULL
まぁ、いいよ。したがって、未定義の変数を未定義の変数として割り当てると、NULLの変数が得られます。私は通訳が実行中に私のためにそれをすることを理解することができます。しかし、私がこのようなことを試みるとき:
<?php
var_dump($test);
var_dump($test);
?>
テストが定義されていないという2つの通知が表示されますが、var_dump()は未定義ではなくNULLを返します。そして今、私はそれを理解していません。通知をオフにすると、var_dump()関数は、未定義の変数とNULLに割り当てられた変数で同じ結果になります。そして、ここにトピックからの質問があります。インタプリタ(またはvar_dump()関数)が未定義とNULLを同じものとして扱うのはなぜですか?