设置或未设置$ var的术语是什么(在PHP中或在编程中一般)?
我在这里http://www.php.net/manual/en/types.comparisons.php找到了一些比较表,但有时它让我感到困惑。
这是否意味着变量在声明变量时设置并且在未声明或声明但未分配的情况下分配或未设置其值?
答案 0 :(得分:3)
isset()
是PHP中的一个函数,如果变量(在本例中为$ var)已赋值,则返回true。如果已创建变量但未赋值,则值为null或undefined,则返回false。基本上,isset($var)
说这个变量可以安全使用或不使用。
为解释NULL
值与undefined
之间的差异,以下代码由Jonathan Kuhn在上述提交中提供。
<?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)
答案 1 :(得分:1)
基本上没有设置未声明,未分配或NULL的变量。
要证明比较表,您可以使用isset()
if (isset($var)) {
echo "it is set.";
}
答案 2 :(得分:1)
这个答案只是为了澄清一点关于php的truty/false
和isset()
功能,@ thatguy发布了一个很好的答案,这只提供了一些例子。
These are a few examples about how php works with true/false scenarios
检查该链接以获取此输出。
您可以使用以下变量从循环中获取此输出:
$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
答案 3 :(得分:1)
这取决于你的意思&#34;设置&#34;。
如果你的意思是&#34;我可以在我的代码中使用该变量而不生成未定义的变量通知&#34;,那么当它具有任何值时设置变量。您无法在PHP中声明变量而无需为其赋值。例如:
<?php
$var;
不创建$var
变量。尝试在该代码行之后使用$var
来获取未定义的变量通知,如果你print_r(get_defined_vars());
,你将获得一个空数组。
如果您的意思是&#34; isset($var)
将返回true
&#34;,则当变量具有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,并且在代码中引用它不会导致未定义的变量通知。