2016-12-13 9 views
-1

変数が値なしで作成されるかどうかはわかっているので、自動的にNULLの値が割り当てられます。変数の 'NULL'値がechoとprintを使用して表示されず、var_dump()関数で表示されるのはなぜですか?

私は、次のコードスニペットがあります

<?php 
    $name; 
    echo $name;  
?> 

上記のコードスニペット出力の両方が以下の通りです

<?php 
    $name; 
    print $name;  
?> 

を(それはまったく同じです):

Notice: Undefined variable: name in C:\xampp\htdocs\php_playground\demo.php on line 7 

別のコードスニペットがあります:

<?php 
    $name; 
    var_dump($name);  
?> 

上記の出力は、(最後)のコードスニペットは以下の通りである:私は、エコーを使用してそれを表示しようとしたときに値「NULL」が表示なっていない理由

Notice: Undefined variable: name in C:\xampp\htdocs\php_playground\demo.php on line 8 
NULL 

だから、私の質問です印刷しますか?

しかし、var_dump()関数を使って表示しようとすると "NULL"の値が表示されます。

これはなぜ発生していますか?

この現象の背景は何ですか?

ありがとうございます。

+1

の長さを有しテストを含むストリング '暗黙的に値を文字列にキャストします。 '(string)NULL'は空の文字列です。だから、あなたはそれを見ることができない。そして、その目的に応じた 'var_dump'はそのままの状態でダンプを投げません。 – zerkms

+0

@zerkms:var_dump()関数の出力として表示されるものは、文字列 "NULL"です。この文字列はデータ型か空の変数の値ですか? – user2839497

+0

これは 'NULL'型の' NULL'値です。 http://php.net/manual/en/language.types.php http://php.net/manual/en/language.types.null.php – zerkms

答えて

4

問題は、NULLがでないことです。 - これは値がないことです。

あなたがそれをechoしようかprintすると、あなたが何かの不在を$nameの値が何も設定されていないため、未定義の変数についての通知を取得し、あなたがすることはできませんecho

$name; 
var_dump($name); 

これの出力は、変数が値を持っていないことを伝えるためにNULLになります。それはではない "NULL"の値を持つ文字列、それはただNULL、何もない、何かの欠如です。

を次のように、この比較:

$name = ''; 
var_dump($name); 

これはstring(0)""を出力 - これはの長さを合計$nameは何の文字(「」)を含まない文字列た値を、持っていたことを語っています。

最後に、以下で見て:

$name = 'test'; 
var_dump($name); 

をこれがstring(4)"test"を出力する - `echo`と`プリント両方ので

+0

あなたは<?php $ name; var_dump($ name); ?>はデータ型 "NULL"であり、値 "NULL"ではありませんか? – user2839497

+0

ほぼ - NULLは値でもデータ型でもなく、値の欠如を表す定数です。特別なケースです。 –

+1

"値の欠如です。" ---これは誤解を招くことです。 '$ a = null;' < - このステートメントでは、変数に特定の値を明示的に割り当てました。 – zerkms

関連する問題