函数名称之前的 & 表示什么?
函数名称之前的表示什么?&
这是否意味着 按引用而不是按值返回?如果是,那么它是正确的吗?我记得你不能返回对局部变量的引用,因为一旦函数退出,它就会消失。$result
function &query($sql) {
// ...
$result = mysql_query($sql);
return $result;
}
另外,这种语法在实践中在哪里使用?
函数名称之前的表示什么?&
这是否意味着 按引用而不是按值返回?如果是,那么它是正确的吗?我记得你不能返回对局部变量的引用,因为一旦函数退出,它就会消失。$result
function &query($sql) {
// ...
$result = mysql_query($sql);
return $result;
}
另外,这种语法在实践中在哪里使用?
这是否意味着 按引用而不是按值返回?
$result
是的。
另外,这种语法在实践中在哪里使用?
这在 PHP 4 脚本中更为普遍,默认情况下,对象是按值传递的。
为了回答你问题的第二部分,这里有一个地方我必须使用它:魔术师!
class FooBar {
private $properties = array();
public function &__get($name) {
return $this->properties[$name];
}
public function __set($name, $value) {
$this->properties[$name] = $value;
}
}
如果我没有在那里使用,这是不可能的:&
$foobar = new FooBar;
$foobar->subArray = array();
$foobar->subArray['FooBar'] = 'Hallo World!';
相反,PHP会抛出一个错误,说“不能间接修改重载的属性”。
好吧,这可能只是一个在PHP中绕过一些错误设计的黑客,但它仍然有用。
但老实说,我现在想不出另一个例子。但我敢打赌有一些罕见的用例...