PHP 中未初始化的变量

UTF*_*F-8 5 php initialization

PHP手册说

没有必要在 PHP 中初始化变量,但这是一个很好的做法。未初始化的变量有其类型的默认值,具体取决于使用它们的上下文 - 布尔值默认为 FALSE,整数和浮点数默认为零,字符串(例如在 echo 中使用)设置为空字符串,数组变为空大批。

我正在使用未初始化的变量进行打高尔夫球,但该程序没有按照我的预期执行。经过检查,我注意到这种奇怪的行为(所有使用的变量都未初始化):

php > $a = $a + 1;
PHP Notice:  Undefined variable: a in php shell code on line 1
php > $b = $b - 1;
PHP Notice:  Undefined variable: b in php shell code on line 1
php > $c++;
PHP Notice:  Undefined variable: c in php shell code on line 1
php > $d--;
PHP Notice:  Undefined variable: d in php shell code on line 1
php > var_dump($a);
int(1)
php > var_dump($b);
int(-1)
php > var_dump($c);
int(1)
php > var_dump($d);
NULL
Run Code Online (Sandbox Code Playgroud)

+ 1, - 1, 并++按照手册中的说明工作。然而,--没有。

$a, $b, 和$c可用于计数,之后。但是$d--;,不会$d因为$dis改变的值NULL

为什么$d设置为NULL,而不是-1

顺便说一下,使用前缀运算符会产生相同的结果:变量设置为1for++$v;但设置为NULLfor --$v;

Tim*_*rib 2

手册中:

\n
\n

注意:\xe2\x80\xa6减少 NULL 值也没有效果,但增加它们会导致 1。

\n
\n

因此,统一化变量得到 NULL 值。增加该值将得到 1(作为 NULL + 1)。但尝试减少它不会产生任何效果,如文档中所述。

\n

此外,相关主题中有一个很好的解释。

\n

这可能看起来违反直觉,但它是语言类型模型的结果。因此,为了避免这种行为,请始终遵循良好实践:始终初始化变量并注意非数字值的算术运算。

\n