【发布时间】:2010-09-19 14:58:03
【问题描述】:
我有一个内置循环的变量。比如:
$str = "";
for($i = 0; $i < 10; $i++) $str .= "something";
如果省略了 $str = "",我会收到未定义变量的通知,但我认为 php 在第一次看到未声明的变量时会自动声明一个变量?
我该怎么做?
【问题讨论】:
标签: php performance loops
我有一个内置循环的变量。比如:
$str = "";
for($i = 0; $i < 10; $i++) $str .= "something";
如果省略了 $str = "",我会收到未定义变量的通知,但我认为 php 在第一次看到未声明的变量时会自动声明一个变量?
我该怎么做?
【问题讨论】:
标签: php performance loops
您得到了未定义的变量,因为您将自身的值与另一个值连接起来。
相当于
$str = $str . "something";
所以,它不能说初始值是多少。相当于这个:
$str = [undefined value] . "something";
[undefined value] 和 "something" 串联的结果是什么?口译员不能说……
因此,您必须先将"" 放入变量中以初始化变量的值,就像您所做的那样。
HTH
【讨论】:
不使用自动声明功能更安全 - 这就是它发出通知的原因。通知是最低级别的警告,默认不会显示。如果您打开它们,大多数较旧的 PHP 应用程序会发出大量通知。
【讨论】:
如果你真的需要让它更清洁,你可以这样做:
for($i = 0, $str = ''; $i < 10; $i++) $str .= "something";
但你所拥有的是我通常所做的。 vlceBerg 解释得很好。
【讨论】:
自动声明的 PHP 变量被注册为未定义,这就是您收到通知的原因。
通常最好在使用 PHP 变量之前声明它们,尽管我们当中的许多懒惰者,包括我自己并不总是这样做。
【讨论】: