PHP:在循环中使用之前声明变量的正确方法

PHP: Right way to declare variable before use in loop

提问人:syaz 提问时间:10/29/2008 更新时间:1/27/2015 访问量:9761

问:

我有一个内置循环的变量。像这样:

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

如果省略了 $str = “”,我会收到未定义的变量通知,但我认为 php 在第一次看到未声明的变量时会自动声明一个变量?

我该怎么做?

PHP 性能 循环

评论


答:

14赞 vIceBerg 10/29/2008 #1

你得到未定义的变量,因为你正在将自身的值与另一个值连接起来。

相当于

$str = $str . "something";

所以,它不能说初始值是多少。它相当于这样:

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

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

因此,您必须先输入变量以启动变量的值,就像您所做的那样。""

HTH

评论

0赞 Tarik 7/8/2011
我假设变量范围也适用于循环,但是是的,你是对的,同样的事情发生在我身上,我现在明白了原因。+1
4赞 Greg 10/29/2008 #2

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

8赞 Ross 10/29/2008 #3

如果你真的需要让它更干净,你可以做:

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

但你所拥有的就是我通常做的事情。 vlceBerg很好地解释了这一点。

评论

1赞 vIceBerg 10/29/2008
只是一个想法......你能这样做吗: for($i = 0, $str = ''; $i < 10; $i++, $str .= “something”); ?我现在没有PHP盒子来测试......
1赞 Jonas Due Vesterheden 10/29/2008
显然是的:zsh % echo '<?for($i = 0, $str = “”;$i < 10;$i++, $str .= “某物”);回声$str; ?>' |php somethingsomethingsomething
0赞 Ross 10/31/2008
是的,vlceBerg - 你甚至不需要循环内容。我发现使用内容更容易理解,但因为这是一行,你不需要。
2赞 Noah Goodrich 10/29/2008 #4

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

通常,最好在使用PHP变量之前声明它们,尽管我们中间的许多懒惰者,包括我自己并不总是这样做。