Почему интерпретатор показывает неопределенное как NULL? - PullRequest
1 голос
/ 03 декабря 2011

В прошлый раз я довольно много изучал PHP, и мне было любопытно, можно ли определить переменную без ее инициализации, как в C ++.

Ну, интерпретатор не выдает фатального ошибки (только замечание, что переменнаятест не определен), если я буду запускать этот код:

<?php 

$test = (int) $test;

?>

И если я попытаюсь проверить его с помощью функции var_dump (), я получу:

int(0)

Я предположил, что интерпретатор автоматически приведётне определено в целое число.Ну, хорошо, это довольно умно.Но когда я удалил код, отвечающий за приведение типов, и проверил его с помощью функции var_dump (), я получил:

NULL

Хорошо, хорошо.Поэтому, когда я назначаю неопределенную переменную как неопределенную переменную, я получаю переменную с NULL.Я могу понять, переводчик делает это для меня в бегах.Но когда я пытаюсь что-то вроде этого:

<?php

var_dump($test);
var_dump($test);

?>

, я получаю два уведомления, что test не определен, но var_dump () возвращает NULL, а не undefined.И теперь я не понимаю.Если я отключу уведомления, функция var_dump () будет иметь тот же результат с неопределенными переменными и переменными, присвоенными NULL.И тут возникает вопрос из темы.Почему интерпретатор (или, скорее, функция var_dump ()) обрабатывает undefined и NULL как одно и то же?

1 Ответ

5 голосов
/ 03 декабря 2011

Специальное значение NULL представляет переменную без значения. NULL - единственно возможное значение типа NULL.

Переменная считается нулевой, если:
ему была присвоена постоянная NULL.
для него еще не установлено значение .
это было не установлено ().

(int)$test = приведение, принудительно установить значение для типа данных (целое число)

предупреждение = причина по $ test никогда не определяется, и вы пытаетесь его использовать

var_dump ($ test) = У меня нет значения для $ test, поэтому я возвращаю вам ноль (по PHP)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...