2012-06-22 1 views
8

При обслуживании кода я сталкиваюсь с циклами, где в конце цикла несколько переменных установлены на NULL следующим образом: $var = NULL;. Из того, что я понимаю в руководстве, NULL в основном используется как нечто, что можно сравнить с PHP-кодом. Поскольку NULL не имеет типа и не является строкой или номером, вывод из него не имеет смысла.Назначение NULL переменной в PHP: что это делает?

К сожалению, я не могу привести пример, но я думаю, что значения NULL записываются в файл в нашем коде. Мой вопрос: имеет ли значение $var значение после назначения, и будет ли эхо/запись выводить результат?

EDIT:Я прочитал ручной ввод PHP наNULL. Нет необходимости публиковать это: http://php.net/manual/en/language.types.null.php в комментарии или ответе, или сверху вниз, чтобы у меня не было RTM. Спасибо!

+1

Я упоминал в своем посте, прежде чем я его отредактировал, что руководство не отвечает на мой вопрос. Я вроде бы подразумевал, что я действительно его прочитал. Я предполагаю, что вы один из лидеров. Большое спасибо человеку. – toon81

+0

Возможно, вы захотите добавить фактический (соответствующий) код, показывающий, как используется «NULL». В противном случае вы получите только RTM-ответы, так как ваши вопросы, похоже, указывают на то, что вы не понимаете использование 'NULL' (в PHP) – Veger

+2

Я пропустил ваш вопрос, потому что он неопределенный, он содержит ненужные данные о вашей работе и не имеет соответствующих сведений о прецеденте. Это приводит к разнообразию (предположительно) непонятных ответов. Мой проголосовавший не потому, что он читал или не читал руководство (хотя это было также не очень ясно до вашего редактирования) – Veger

ответ

1

null в значительной степени похож на любое другое значение в PHP (фактически, это также другой тип данных, чем строка, int и т. Д.).

Однако есть одно важное отличие: isset($var) проверяет существование var и имеет ненулевое значение.

Если вы планируете прочитать переменную когда-либо снова, прежде чем присваивать новое значение, unset() неправильный способ сделать, но назначая null это прекрасно:

php > $a = null; 
php > if($a) echo 'x'; 
php > unset($a); 
php > if($a) echo 'x'; 
Notice: Undefined variable: a in php shell code on line 1 
php > 

Как вы можете видеть, unset() фактически удаляет переменную , как и никогда не существовало, а присвоение null задает его конкретному значению (и при необходимости создает переменную).

Полезный потребительный случай null в аргументах по умолчанию, если вы хотите знать, если это было предусмотрено или нет, и пустых строк, ноль, и т.д., действительны также:

function foo($bar = null) { 
    if($bar === null) { ... } 
} 
0

Null в PHP средствах переменная не была назначена.

http://php.net/manual/en/language.types.null.php

+0

Боюсь, это не мой вопрос. Я был уверен RTFM до публикации ... :) – toon81

+0

Обычно рекомендуется ссылаться на английскую версию руководства вместо своей версии $ other_language. – ThiefMaster

+0

@ toon81 и, похоже, руководство действительно отвечает на ваши вопросы, поскольку оно указывает на использование нулевого и даже показывает, что '$ var = NULL' совершенно легально – Veger

0

Оказывается, что цель нулевой реализации на основе от информации обеспечить, чтобы очистить переменную.

Вы можете отключить переменную в PHP, установив ее в NULL или используя функцию unset().

unset() уничтожает указанные переменные.

Поведение функции unset() внутри функции может варьироваться в зависимости от какой тип переменной вы пытаетесь уничтожить.

Если глобальная переменная не установлена ​​() внутри функции, уничтожается только локальная переменная . Переменная в вызывающей среде сохранит то же значение, что и до вызова функции unset().

3
[[email protected] ~]$ php -r '$i="foo"; print "ONE\n"; var_dump($i); unset($i); print "TWO\n"; var_dump($i); $i=NULL; print "THREE\n"; var_dump($i); print "\n"; if (isset($i)) print "Set.\n"; if (is_null($i)) print "is_null\n";' 
ONE 
string(3) "foo" 
TWO 
NULL 
THREE 
NULL 
is_null 
[[email protected] ~]$ 

Результат isset() будет логическое значение FALSE, но переменная по-прежнему определяется. Функция isset() будет лучше названа isnotnull(). :-P

Обратите внимание, что is_null() также вернет true для значения, которое никогда не было установлено.

Yay PHP.

1

Переменная может быть установлена ​​в NULL, чтобы указать, что она не содержит значения. Имеет смысл, если в какой-то более поздней точке кода переменная проверяется на наличие NULL.

Переменная может быть явно установлена ​​в NULL, чтобы освободить используемую им память. Это имеет смысл, если переменная потребляет много памяти (см. this question).

Сухой запуск кода, и вы, возможно, сможете выяснить точную причину.

-1

Null - это особый тип данных, который может иметь только одно значение, которое само по себе. Иными словами, null является не только типом данных, но и литеральным символом ключевого слова переменная типа данных null - это переменная, которая не имеет значения, назначенного ей при создании переменной без значения, которому автоматически присваивается значение null, это так что всякий мусор в этом месте памяти до этого очищается, иначе программа может попытаться обработать его.

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