将变量传递给传递的变量与函数本身中的变量同名的函数是否被认为是错误的?我从来没有看到有人这样做,但想知道是否有原因(除了可读性)。例如:
$variable = "value";
function myFunction($variable) {
return $variable;
}
答案 0 :(得分:2)
除了一些命名混淆之外,没有问题。因为,
$variable = "value"; // this declaration belong to a global scope
// but $variable passing through as argument, makes it scope within that function declaration only
function myFunction($variable) {
return $variable;
}
你可能期望如果你调用像myFunction()
这样的函数,即没有任何参数,它会返回你的“值”,但绝对不会,因为参数不是全局的$variable
但是,如果您尝试使用$variable
中的全局myFunction
,则会导致一些冲突,这就是为什么没有人这样做。
答案 1 :(得分:0)
除了使变量有点令人困惑地跟踪之外,这没有任何问题。它们存在于不同的范围内。
答案 2 :(得分:0)
这取决于你,反之亦然,如果你想故意将一个变量传递给一个函数..那么你必须使用它:
$variable = "value";
function myFunction($variable) {
global $variable;
return $variable;
}
echo myFunction('another value');
还有一点。创建函数时,您可以为参数设置默认值以避免错误:
function myFunction($variable="default value") {
return $variable;
}
echo myFunction();
答案 3 :(得分:0)
根本没有任何问题,我认为这很常见。
但是,在每种情况下,您应始终为变量或参数选择最佳名称,而不是将一条规则应用于整个代码。
例如,在数据库查找功能中,$id
引用的内容可能很明显,因此它是一个合理的参数名称;但是在你调用它的地方,你可能会有很多不同种类的ID,所以应该使用更具描述性的变量名。另一方面,每次构建SQL字符串时,它可能是范围内唯一的此类变量,因此为其提供一致的名称可使代码保持整洁且易于阅读。
一个常见的观察是,所有代码的阅读频率都高于编写代码(是的,甚至是您不敢与世界分享的个人网站)。应该选择变量名称:使代码易于阅读,理解和维护的原因是什么?
答案 4 :(得分:-2)
您可以使用全局并在param变量中添加默认值。
$variable = "value";
function myFunction($variable = '') {
global $variable;
return $variable;
}