PHP unset()会话数据始终在echo之前执行

PHP unset()会话数据始终在echo之前执行,php,session,Php,Session,假设我有以下代码: var_dump($_SESSION); ?> <div class="CustomErrorMessage"> <img src="" /><?php echo $_SESSION['message']; ?> </div> <?php unset($_SESSION['message']); var_dump($_SESSION); 这将产生: 1.空

假设我有以下代码:

var_dump($_SESSION);
?>

        <div class="CustomErrorMessage">
            <img src="" /><?php echo $_SESSION['message']; ?>
        </div>

<?php
unset($_SESSION['message']);
var_dump($_SESSION);
这将产生: 1.空会话数组变量转储 2.潜水艇 3.未找到此索引的警告 4.会话数组的另一个空var转储

假设我在第2行添加了骰子。然后发生这种情况: 会话数组被var_转储,消息就在那里

这怎么可能?看起来unset总是在echo之前执行

我的目标是向用户显示一条错误消息,该消息通过$u会话从一个页面传输到另一个页面,并且不会多次显示。因此,如果显示了错误消息,请将其删除

对我来说,这听起来像是一个实习PHP问题


谢谢

可能您正在重新加载页面,因此消息只存在一次,然后就会取消设置。你重新加载页面,它就不在了,所以你会有错误。@MarcB:好主意,但我执行这个的部分,在根页面的最底部,除了关闭主体和html标记之外,执行之后什么都没有。。。没有执行头或任何类型的重定向。好吧,php没有时间旅行。unset不可能在vardump/div输出之前执行。@MarcB:这需要一个原因……是的,但可能是您的代码在别处/未显示导致的。就像我说的。php不支持时间旅行。变量/值不会在5行代码中消失。