2016-12-13 1 views
-1

Как мы все знаем, если переменная создается без значения, ей автоматически присваивается значение NULL.Почему значение «NULL» переменной не отображается с использованием эха и печати, но отображается с помощью функции 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);  
?> 

Выход выше (последний) фрагмент кода, как показано ниже:

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

Итак, мой вопрос, почему значение «NULL» не получает отображаться, когда я попытался показать его с помощью эхо и печатать?

Однако значение «NULL» отображается, когда я пытался показать его с помощью функции var_dump().

Почему это происходит?

Что стоит за этим поведением?

Thank you.

+1

Поскольку оба '' echo' и печать 'неявно передать значение в строку. И '(string) NULL' - пустая строка. Так вот, вы просто не можете это увидеть. И 'var_dump' в соответствии с его назначением не использует ничего, кроме дампов as-is. – 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 DID, имеют значение, которое было строка, которая не содержит ни одного символа («») на общую длину .

Наконец, рассмотрим следующий:

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

Это выводит string(4)"test" - в строки, содержащейтест, который имел длину

+0

Вы говорите, что вывод как тип данных «NULL», а не как значение «NULL»? – user2839497

+0

Почти - NULL не является значением или типом данных, а константой, представляющей отсутствие значения. Это особый случай. –

+1

«это отсутствие ценности». --- Это вводит в заблуждение. '$ a = null;' <- в этом выражении я явно назначил определенное значение переменной. – zerkms

Смежные вопросы