0

我想把 session 的所有值放在一个以键命名的变量中,所以我想出了这段代码。

foreach($_SESSION as $key => $value){
   $$key = $value;
}

例如,我想使用会话并在其上保存用户名

$_SESSION['username'] = "Keith";

这意味着我可以$username随时使用。现在我的问题是我如何使用上面代码生成的所有信息并在函数中使用它,例如:

function get_content(){    
   echo $username;    
}
4

4 回答 4

4

您必须有状态地将变量传递给函数或使用 global 关键字。

将超级全局数组中的变量导入函数作用域的一种简单方法是使用extract。所以在你的函数中你可以做到这一点。

function get_contents(){
      extract($_SESSION);
      echo $username;
}
于 2013-07-30T04:28:50.023 回答
2

为此,您必须使用函数参数

function get_content($var){
    return $var;
}

在这里,您通过传递适当的变量来调用该函数。

echo get_content($username);

或者您可以使用Orangepill建议的提取物

function get_contents(){
    extract($_SESSION);
    return $username;
}

注意:不要在函数内使用 echo 来显示结果。

于 2013-07-30T04:27:14.990 回答
2

好的,所以您可以extract()在函数中使用来创建局部变量,但也要考虑以下内容。

为了使您的函数可测试,最好显式地期望包含上下文的参数(类似的数组$_SESSION,但不一定)。

function get_content(array $context) 
{
    echo $context['username'];
}

要调用它,你会写:

get_content($_SESSION);

请注意,extract($context);如果您不喜欢更显式的变量引用,您仍然可以在顶部使用来创建局部变量。

于 2013-07-30T04:47:48.800 回答
1

要从函数中访问全局变量,您必须使用global声明:

function get_content(){
   global $username;
   echo $username;
}

或者您可以将变量作为参数传递:

get_content($username);

function get_content($username) {
    echo $username;
}

如何设置变量无关紧要。

于 2013-07-30T04:38:26.717 回答