是否需要在 PHP 中初始化/声明变量?
Is it necessary to Initialize / Declare variable in PHP?
是否有必要在循环或函数之前初始化/声明变量?
无论我之前是否初始化/声明变量,我的代码仍然有效。
我正在分享我实际意思的演示代码:
$cars = null;
foreach ($build as $brand) {
$cars .= $brand . ",";
}
echo $cars;
或
foreach ($build as $brand) {
$cars .= $brand . ",";
}
echo $cars;
两段代码对我来说都是一样的,所以是否需要在开头初始化/声明一个变量?
PHP 不需要它,但始终初始化变量是一个好习惯。
如果您不使用默认值初始化变量,PHP 引擎将根据您使用变量的方式进行类型转换。这有时会导致意外行为。
所以简而言之,在我看来,总是为你的变量设置一个默认值。
P.S。
在您的情况下,该值应设置为“”(空字符串),而不是 null,因为您正在使用它来连接其他字符串。
编辑
正如其他人 (@n-dru) 所指出的,如果您不设置默认值,则会生成一条通知。
你最好给它分配一个空字符串$cars = '';
,否则(如果你有错误报告)你应该看到一个通知:
Notice: Undefined variable: cars
PHP 将假设它是空的并且结果字符串将是相同的,但您不应该因为需要记录该通知而导致额外的开销。所以性能明智的做法是先将其分配为空。
此外,使用 Aptana 等编辑器,您可能希望按 F3
查看给定变量的来源。将它初始化在某个地方真是太舒服了。所以调试-wise 变量出生的明显位置也更好。
这取决于:如果你在函数外声明一个变量,它有一个"global scope",这意味着它只能在函数外访问。
如果一个变量是在函数内部声明的,它有一个 "local scope" 并且只能在该函数内部使用。
(http://www.w3schools.com/php/php_variables.asp)
但似乎您在函数外部定义的变量 "cars" 即使没有 global 关键字也适用于您的函数...
是否有必要在循环或函数之前初始化/声明变量?
无论我之前是否初始化/声明变量,我的代码仍然有效。
我正在分享我实际意思的演示代码:
$cars = null;
foreach ($build as $brand) {
$cars .= $brand . ",";
}
echo $cars;
或
foreach ($build as $brand) {
$cars .= $brand . ",";
}
echo $cars;
两段代码对我来说都是一样的,所以是否需要在开头初始化/声明一个变量?
PHP 不需要它,但始终初始化变量是一个好习惯。
如果您不使用默认值初始化变量,PHP 引擎将根据您使用变量的方式进行类型转换。这有时会导致意外行为。
所以简而言之,在我看来,总是为你的变量设置一个默认值。
P.S。 在您的情况下,该值应设置为“”(空字符串),而不是 null,因为您正在使用它来连接其他字符串。
编辑
正如其他人 (@n-dru) 所指出的,如果您不设置默认值,则会生成一条通知。
你最好给它分配一个空字符串$cars = '';
,否则(如果你有错误报告)你应该看到一个通知:
Notice: Undefined variable: cars
PHP 将假设它是空的并且结果字符串将是相同的,但您不应该因为需要记录该通知而导致额外的开销。所以性能明智的做法是先将其分配为空。
此外,使用 Aptana 等编辑器,您可能希望按 F3
查看给定变量的来源。将它初始化在某个地方真是太舒服了。所以调试-wise 变量出生的明显位置也更好。
这取决于:如果你在函数外声明一个变量,它有一个"global scope",这意味着它只能在函数外访问。
如果一个变量是在函数内部声明的,它有一个 "local scope" 并且只能在该函数内部使用。 (http://www.w3schools.com/php/php_variables.asp)
但似乎您在函数外部定义的变量 "cars" 即使没有 global 关键字也适用于您的函数...