Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用&;获取$\u会话位置;_Php_Session_Reference_Unset - Fatal编程技术网

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;
}