Php 使用&;获取$\u会话位置;
为什么这个代码不起作用Php 使用&;获取$\u会话位置;,php,session,reference,unset,Php,Session,Reference,Unset,为什么这个代码不起作用 public function get($key) { return isset($_SESSION[$key]) ? &$_SESSION[$key] : false; } 错误 谢谢。三元运算符实际上是三元运算符,例如expr1?expr2:expr3 见: 如果您尝试使用以下语法从函数返回引用:return($this->value)这将不起作用,因为您试图通过引用返回表达式而不是变量的结果。您只能通过引用从函数返回变量,而不能返回其他变量 PHP
public function get($key) {
return isset($_SESSION[$key]) ? &$_SESSION[$key] : false;
}
错误
谢谢。三元运算符实际上是三元运算符,例如expr1?expr2:expr3 见: 如果您尝试使用以下语法从函数返回引用:
return($this->value)代码>这将不起作用,因为您试图通过引用返回表达式而不是变量的结果。您只能通过引用从函数返回变量,而不能返回其他变量
PHP中返回引用的语法是&(){return}
而且,引用只应返回变量引用
因此,您可能应该重写它:
function &get($key) {
$a = false;
if( isset($_SESSION[$key]) )
return $_SESSION[ $key ];
return $a;
}
只要拆下&它就会工作。啊…那是。。。有趣。我不知道在PHP中返回对局部变量的引用会做什么,因为我从未尝试过。在大多数其他语言中,这是一个严重的逻辑错误。如果您想考虑到$\u会话[$key]
以前被设置为null
,请使用array\u key\u exist($key,$\u SESSION)
。
function &get($key) {
$a = false;
if( isset($_SESSION[$key]) )
return $_SESSION[ $key ];
return $a;
}