1

前回は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を同じものとして扱うのはなぜですか?

4

1 に答える 1

5

特別な NULL 値は、値のない変数を表します。NULL は、NULL 型の唯一の可能な値です。

変数は、次の場合に null と見なされ
ます。 定数 NULL が割り当てられている。
まだ値が設定されていません
unset() されています。

(int)$test= キャスト、値をデータ型 (整数) に強制します

警告通知 = 原因 $test が定義されておらず、使用しようとしている

var_dump($test) = $test の値がわからないので、null を返します (PHP による)

于 2011-12-03T06:04:34.340 に答える