是否有必要在PHP中初始化/声明变量?

时间:2015-06-20 15:23:25

标签: php variables initialization declaration

这个问题的目的是只为我和许多像我这样的人获取知识或信息。

所以我的问题是:

是否需要在循环或函数之前初始化/声明变量?

提出这个问题是因为我的困惑,因为我之前是否初始化/声明变量我的代码是否仍然有效。

我正在分享我实际意思的演示代码:

$cars = null;

foreach ($build as $brand) {
     $cars .= $brand . ",";
}

echo $cars;

OR

foreach ($build as $brand) {
     $cars .= $brand . ",";
}

echo $cars;

这两段代码对我来说都是一样的,所以在开头初始化/声明一个变量是必要的吗?

3 个答案:

答案 0 :(得分:27)

PHP不需要它,但始终初始化变量是一个好习惯。

如果不使用默认值初始化变量,PHP引擎将根据您使用变量的方式进行类型转换。这有时会导致意外行为。

简而言之,在我看来,始终为变量设置默认值。

P.S。 在您的情况下,值应设置为“”(空字符串),而不是null,因为您使用它来连接其他字符串。

修改

正如其他人(@ n-dru)所说,如果你没有设定默认值,就会产生通知。

答案 1 :(得分:16)

你最好为它分配一个空字符串$cars = '';,否则(如果你有错误报告),你应该看到一个通知:

  

注意:未定义的变量:cars

PHP将假设它是空的并且结果字符串将是相同的,但是您不应该因为需要记录该通知而导致额外的开销。所以性能 - 最好先将它分配为空。

此外,使用像Aptana等编辑器,您可能希望按F3以查看给定变量的来源。将它初始化到某个地方真是太舒服了。所以调试 -wise也最好有变量出生的明显位置。

答案 2 :(得分:0)

取决于:如果在函数外部声明变量,它具有“全局范围”,这意味着它只能在函数外部访问。

如果在函数内声明了变量,则它具有“局部范围”,并且只能在该函数内部使用。      (http://www.w3schools.com/php/php_variables.asp

但是,即使没有全局关键字,您在函数外定义的变量“cars”似乎也适用于您的函数...