我有一个在循环中构建的变量,例如:
$str = "";
for($i = 0; $i < 10; $i++) $str .= "something";
如果省略 $str = "",我会收到未定义变量的通知,但是我认为 PHP 会自动声明变量,第一次看到未声明的变量时会这样做?
我应该如何正确处理?
我有一个在循环中构建的变量,例如:
$str = "";
for($i = 0; $i < 10; $i++) $str .= "something";
你因为将自己的值与其他值连接而得到未定义变量。
等同于
$str = $str . "something";
所以,它无法确定初始值是什么。这相当于:
$str = [未定义的值] . "something";
将[未定义的值]
和"something"
连接的结果是什么?解释器无法确定...
因此,您必须首先将""
放入变量中以初始化变量的值,就像您所做的那样。
希望这有所帮助。
for($i = 0, $str = ''; $i < 10; $i++) $str .= "something";
最好不要使用自动声明功能 - 这就是为什么它会发出一个提示。提示是最低级别的警告,并且默认情况下不会显示。如果您打开提示,大多数旧的PHP应用程序将会发出许多提示。
PHP自动声明的变量会被注册为未定义,这就是您收到通知的原因。
一般来说,在使用变量之前最好先声明PHP变量,虽然我们中的许多懒惰者(包括我在内)并不总是这样做。