使用foreach设置多个会话属性

时间:2017-05-12 22:55:27

标签: php session foreach

我正在处理成员编辑页面,因此对于每个html输入,我使用会话来回显以下值:

value="<?php echo htmlspecialchars($_SESSION['username']));?>
value="<?php echo htmlspecialchars($_SESSION['email']));?>

...等 一旦成员编辑个人资料,我再次使用查询来获取新的更新的$ results。

这是我用来取消/设置新会话的旧方式:

unset($_SESSION['user']); 
unset($_SESSION['email']); 
unset($_SESSION['first_name']); 
unset($_SESSION['last_name']); 
unset($_SESSION['birth_date']); 
unset($_SESSION['about_me']); 
unset($_SESSION['gender']);
unset($_SESSION['last_activity']);
unset($_SESSION['image_avatar']);   


$_SESSION['user'] = $result['user']; 
$_SESSION['email'] = $result['email']; 
$_SESSION['first_name'] = $result['first_name']; 
$_SESSION['last_name'] = $result['last_name']; 
$_SESSION['birth_date'] = $result['birth_date']; 
$_SESSION['about_me'] = $result['about_me']; 
$_SESSION['gender'] = $result['gender'];
$_SESSION['last_activity'] = $result['last_activity'];
$_SESSION['image_avatar'] = $result['image_avatar'];

但我想要更少的代码行,并试图像这样制作foreach:

    foreach($result as $key => $value) {
        unset($_SESSION[$key]);
    }

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

使用foreach工作正常,但我唯一的问题是,如果这是正确的方法吗?

1 个答案:

答案 0 :(得分:2)

我能想到的唯一改进就是在一个foreach中完成所有这一切,并且没有必要取消你要替换的价值

foreach($result as $key => $value) {
    // not necessary if you are going to replace the value anyway
    //unset($_SESSION[$key]);
    $_SESSION[$key] = $value;
}