在新变量中存储会话

时间:2013-07-30 04:22:10

标签: php function session

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

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

例如,我想使用会话并使用

在其上保存用户名
$_SESSION['username'] = "Keith";

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

function get_content(){    
   echo $username;    
}

4 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

为此你必须使用函数参数

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

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

echo get_content($username);

您可以使用 Orangepill

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

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

答案 2 :(得分:2)

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

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

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

要打电话给你,你会写:

get_content($_SESSION);

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

答案 3 :(得分:1)

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

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

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

get_content($username);

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

如何设置变量是无关紧要的。