在php中的正常变量中转换$ _SESSION变量

时间:2014-02-20 05:00:06

标签: php session

我试图传递存储在SESSION独立变量中的所有变量,如下所示:

<?php

session_start();
ini_set('display_errors', 'off');
ini_set('display_startup_errors', 'off');


$vars = array('id','name','mail1','mail2','phone1','phone2','address','genere',
                        'departament','tittle' );
    foreach ($vars as $v) {
            if (isset($_SESSION[$v])) {
                $$vars[v]= $_SESSION[$v];
                echo $$vars[v].'<br />';
            }
        }
    echo $name;
    echo </ br>;            
    echo $mail1;


?>

但是当我尝试打印变量的内容时,显然是空的。我做错了什么?

3 个答案:

答案 0 :(得分:2)

你的代码有错误只改变了isset函数之后的行:

<?php
$$v = $_SESSION[$v];    
?>

答案 1 :(得分:1)

试试这个:

extract($_SESSION)
echo $id;
echo $name;
// so on ...

参考:http://in2.php.net/extract

请检查文档中的警告说明

OR

foreach ($vars as $v) {
    if (isset($_SESSION[$v])) {
         $$v= $_SESSION[$v];
         echo $$v.'<br />';
    }
}

答案 2 :(得分:0)

而不是单独存储变量,而应将它们存储在数组中。这样你就可以访问你需要的唯一变量。

如下所示:

$_SESSION['details'] = array();
$_SESSION['details']['name'] = 'xxx';
$_SESSION['details']['id'] = 'xxx';
$_SESSION['details']['mail1'] = 'xxx';
$_SESSION['details']['mail2'] = 'xxx';
$_SESSION['details']['phone1'] = 'xxx';

现在要单独访问它们,您只需执行此操作即可。

extract($_SESSION['details']);
echo $name;
echo $id;