如何在$ _SESSION变量中发送数组

时间:2015-05-08 11:02:18

标签: php session session-variables

我想通过会话发送我的数组。这是我的代码:

    $result = mysqli_query($conn, trim($query1));
                if(!$result)
                {
                die('INVALID QUERY: '.mysqli_error($conn));
                }       
                while ($data = mysqli_fetch_row($result)) 
                {
                    echo ("<tr><td>$data[0]</td><td>$data[1]</td><td>$data[2]</td><td>$data[3]</td><td>$data[4]</td><td>$data[5]</td><td>$data[6]</td><td>$data[7]</td><td>$data[8]</td></tr>");
            $temp[] = $data[0];             
                }   
$_SESSION['data'] = $temp;

但我现在只有失败。在另一个php文件中,想要显示这些值。

foreach ($_SESSION['data'] as $key) {
    # code...
}

如何将变量保存到$ _SESSION?

1 个答案:

答案 0 :(得分:0)

这可能会对你有帮助。

function sessionStore($sessionKey,$value) {
    $sessionValue = null;
    if (is_array($value)) {
        $sessionValue = json_encode($value);
    }
    else{
        $sessionValue = $value;
    }

    $_SESSION[$sessionKey] = $sessionValue;
}

function sessionRetrieveAll($sessionKey){

    $value = $_SESSION[$sessionKey];

    $result = json_decode($value,true);

    if (json_last_error() === JSON_ERROR_NONE) {
        return $result;
    }

    return $value;
}

function sessionRetrieve($sessionKey,$arrayKey = null){
    $arr = $this->sessionRetrieveAll($sessionKey);

    if(!is_array($arr)){
        return $arr;
    }
    else if($arrayKey != null){
        return isset($arr[$arrayKey]) ? $arr[$arrayKey] : null;
    }

    return $arr;

}

你可以像这样实施

    $this->sessionStore('test',['a' => 'b', 'c' => 'd']);
    print_r($this->sessionRetrieve('test')); //Returns array
    echo $this->sessionRetrieve('test','a'); // Returns 'b'

    $this->sessionStore('test2','just string');
    echo $this->sessionRetrieve('test2'); // Returns 'just string'

干杯!!!