2008-10-28 22 views
7

我有一个内置循环的变量。喜欢的东西:PHP:在循环中使用之前声明变量的正确方法

$str = ""; 
for($i = 0; $i < 10; $i++) $str .= "something"; 

如果$海峡=“”被省略,我得到了一个未定义的变量声明,但我认为PHP自动声明一个变量,它第一次看到未申报的吗?

我该怎么做?

回答

14

您将得到未定义的变量,因为您将自己的值与另一个值连接起来。

$str = $str . "something";

相当于所以,不能说什么是初始值。这是这相当于:

$str = [undefined value] . "something";

什么的[undefined value]"something"串联的结果呢?口译员不能说...

因此,您必须首先将""放入变量中,以启动变量的值,就像您一样。

HTH

+0

我假设变量作用域也适用于循环,但是你是正确的同样的事情发生在我身上,我现在明白了原因。 +1 – Tarik 2011-07-08 08:12:38

4

它的安全不会使用自动声明功能 - 这就是为什么它会发出通知。通知是最低级别的警告,并且默认情况下不会显示。如果要打开它们,大多数较早的PHP应用程序都会发出很多通知。

8

如果你真的需要,使之成为更干净,你可以这样做:

for($i = 0, $str = ''; $i < 10; $i++) $str .= "something"; 

但你拥有的是什么,我通常做。 vlceBerg解释得很好。

+1

只是一个想法...你能做到这一点: for($ i = 0,$ str =''; $ i <10; $ i ++,$ str。=“something”); ?我现在没有PHP框来测试.... – vIceBerg 2008-10-28 16:35:58

2

自动声明的PHP变量被注册为未定义,这就是您接收通知的原因。

在使用它们之前声明PHP变量通常会更好,尽管我们之间很多懒惰,包括我自己在内并不总是这样做。