【发布时间】:2012-04-30 11:24:47
【问题描述】:
我知道在 PHP 中,当您希望函数参数引用目标变量时,我们使用 & 符号 & 符号。但我无法弄清楚它在以下场景中是否仍然有效和可靠(从请求中收集变量)。
$v1 = $_POST['v1'];
function filled(&$var) {
return isset($var) && !empty($var);
}
if (!filled($v1)) // etc.
甚至在这种情况下:
$v1 = $_POST['v1'];
$v2 = $_POST['v2'];
function filled() {
$args = &func_get_args(); // does this even take the references and not the values?
foreach ($args as &$arg) {
if (empty($arg) || !isset($arg)) return false;
}
return true;
}
if (!filled($v1, $v2)) // etc.
提前感谢您的澄清。
【问题讨论】:
-
对不起,我没看懂,为什么你的例子需要参考?
-
其实你是对的。无论如何,您认为第二个函数的第一行至少可以完成它的工作吗?
-
注意:!empty() 包含 isset(),所以不需要两者都做。
-
对于 0 和 false,
empty不返回true吗?这对我来说是一堵大墙(也适用于我自己的例子)。 -
@jack - PHP 使用写时复制语义,因此在这些示例中使用引用对内存使用没有影响。
标签: php function post pass-by-reference