提问人:syaz 提问时间:10/29/2008 更新时间:1/27/2015 访问量:9761
PHP:在循环中使用之前声明变量的正确方法
PHP: Right way to declare variable before use in loop
问:
我有一个内置循环的变量。像这样:
$str = "";
for($i = 0; $i < 10; $i++) $str .= "something";
如果省略了 $str = “”,我会收到未定义的变量通知,但我认为 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变量之前声明它们,尽管我们中间的许多懒惰者,包括我自己并不总是这样做。
评论