【问题标题】:How to insert array into $_SESSION() from extract function()?如何从提取函数()将数组插入 $_SESSION()?
【发布时间】:2019-12-31 10:36:34
【问题描述】:

我的 home.php 文件中有一个函数 get_teacher_info()。 它从 mysql 查询返回一个数组。 我将它存储在$data 变量中。

现在我想将数组中的每个 'key'=>'value' 对设置为单独的变量。所以我使用extract()

如何设置从extract() 接收的会话变量

我的代码如下。

$data = $teacher->get_teacher_info();
$_SESSION[]= extract($data);

【问题讨论】:

  • 在这种情况下您不需要使用extract
  • 你可以使用array_merge,但我建议你使用$_SESSION['teacher'] = $data;
  • @krishnaRao 你从$teacher->get_teacher_info()得到的数据的返回类型是什么?

标签: php arrays php-7


【解决方案1】:

您可以像这样设置会话,但是 var 转储会提供更多信息


    $data = $teacher->get_teacher_info();
    if(is_array($data)) {
        foreach($data as $key => $value){
            $_SESSION[$key] = $value;
        }
    }

然后你可以创建一个全局函数来访问这样的值


    function getData($key){
        if(array_key_exists($key,$_SESSION)){
            return $_SESSION[$key];
        }
        return FALSE;
    }

【讨论】:

    【解决方案2】:

    你可以这样使用它

    $data = $teacher->get_teacher_info();
    
    // if there is addtional data in the `$_SESSION` before assigning data extracted from DB you can use the `array_merge`, this will keep previous data from `$_SESSION`
    $_SESSION = array_merge($_SESSION, $data);
    
    // If there is no additional data then directly assign the data from DB to `$_SESSION` only if the `$data` is already an associative array
    $_SESSION = $data;
    

    【讨论】:

    • @ArjunJGowda 请阅读我添加的附加评论。
    • 是的,如果 $data 有关联数组,这应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多