Что означает термин, что $ var установлен или не установлен (в PHP или в общем в программировании)?
Я узнал здесь http://www.php.net/manual/en/types.comparisons.php какая-то сравнительная таблица, но иногда это меня смущает.
Означает ли это, что переменная устанавливается, когда она объявлена, и ей присвоено или не установлено значение, если она не объявлена или объявлена, но не назначена?
isset()
это функция в PHP, которая будет возвращать true, если переменной, в данном случае, $ var было присвоено значение. Если переменная была создана, но ничего не назначено, имеет значение null или undefined, она вернет false. в принципе, isset($var)
говорит, что эта переменная безопасна для использования или нет.
Чтобы объяснить различия между NULL
значение и undefined
следующий код был предоставлен Джонатаном Куном в коммитах выше.
<?php
//test 1 is defined, but has a value of null. isset will return false, use causes no error.
$test1 = null;
var_dump($test1);
var_dump(isset($test1));
echo "\n----------\n\n";
//test2 is defined with a string value. isset will return true
$test2 = "test";
var_dump($test2);
var_dump(isset($test2));
echo "\n----------\n\n";
//test3 is not defined, isset returns false and use causes error.
var_dump($test3);
var_dump(isset($test3));
Который будет выводить:
NULL
bool(false)
----------
string(4) "test"bool(true)
----------
Notice: Undefined variable: test3 in /in/Nmk0t on line 17
NULL
bool(false)
В основном переменная, которая не объявлена, не назначена или имеет значение NULL, не установлена.
Чтобы доказать таблицу сравнения, вы можете проверить это с isset()
if (isset($var)) {
echo "it is set.";
}
Этот ответ только для того, чтобы прояснить немного больше о truty/false
а также isset()
Функция php @thatguy опубликовала отличный ответ, это только примеры.
Вот несколько примеров того, как php работает со сценариями true / false
Проверьте эту ссылку для кода, чтобы получить этот вывод.
Вы получите этот вывод из цикла с этими переменными:
$var1 = 0;
$var2 = 1;
$var3 = null;
$var4;
$var5 = false;
$var6 = true;
Examples about isset(), and truthy/falsy comparitions
-----------------------------------------------------
About isset() function
----------------------
var1 is declared and has a value, value = 0
var2 is declared and has a value, value = 1
var3 is declared with no value or is null
var4 is declared with no value or is null
var5 is declared and has a value, value =
var6 is declared and has a value, value = 1
----------------------
About true/false cases
----------------------
var1 is declared with no value, is null or equal to zero or false
var2 is declared and has a value, value = 1
var3 is declared with no value, is null or equal to zero or false
var4 is declared with no value, is null or equal to zero or false
var5 is declared with no value, is null or equal to zero or false
var6 is declared and has a value, value = 1
About asking to a never ever writen variable
--------------------------------------------
no idea where this variable is
no idea where this variable is
Это зависит от того, что вы подразумеваете под «набором».
Если вы имеете в виду «я могу использовать переменную в своем коде, не генерируя неопределенные уведомления о переменных», тогда переменная устанавливается, когда она имеет какое-либо значение. Вы не можете объявить переменную в PHP, не присвоив ей значение. Например:
<?php
$var;
Не создает $var
переменная. Пытаясь использовать это $var
что-либо после этой строки кода даст вам уведомление о неопределенной переменной, и если вы print_r(get_defined_vars());
вы получите пустой массив.
Если ты имеешь ввиду «isset($var)
вернусь true
«, тогда переменная устанавливается, когда она имеет любое значение, кроме null
, Например:
<?php
$varX = null;
$varY = 0;
С этими переменными оба определены. Вы можете использовать их в своем коде, не получая уведомления о неопределенных переменных. print_r(get_defined_vars());
покажет вам Array ( [varX] => [varY] => 0 )
, Но isset($varX)
возвращается false
даже если $varX
определяется, потому что он имеет null
значение.
Как только вы присвоите значение переменной, оно останется определенный в его пределах, если вы явно не отключили его unset($var)
,
Единственный случай, когда вы можете объявить переменную без явного присвоения значения, это когда это свойство класса. Например:
class Example
{
public $var;
}
$ex = new Example;
var_dump($ex->var);
Вот $var
неявно присваивается значение null, когда оно объявляется, и ссылка на него в вашем коде не вызовет уведомление о неопределенной переменной.