PHP-unset函数在我的代码之前取消设置我的var

PHP-unset函数在我的代码之前取消设置我的var,php,function,unset,Php,Function,Unset,我想使用unset函数清除我的会话vqriqble“flash”,但现在我无法打印我的flash消息,因为unset函数是在我之前的代码之前调用的。 它在我的header模板中被调用:header.php,它在代码开头的每个页面中都被调用 代码如下: <?php if(isset($_SESSION['flash'])): ?> <?php foreach($_SESSION['flash'] as $type => $message): ?> <

我想使用unset函数清除我的会话vqriqble“flash”,但现在我无法打印我的flash消息,因为unset函数是在我之前的代码之前调用的。 它在我的header模板中被调用:header.php,它在代码开头的每个页面中都被调用

代码如下:

<?php if(isset($_SESSION['flash'])): ?>
  <?php foreach($_SESSION['flash'] as $type => $message): ?>
    <div class="alert alert-<?= $type; ?> bk-fullwidth-alert">
      <p><?= $message; ?></p>
    </div>
  <?php endforeach; ?>
  <?php unset($_SESSION['flash']); ?>
<?php endif; ?>


试试这个。问题是unset()在循环中,所以变量在第一次循环执行时被取消设置

<?php if(isset($_SESSION['flash'])): ?>
  <?php foreach($_SESSION['flash'] as $type => $message): ?>
    <div class="alert alert-<?= $type; ?> bk-fullwidth-alert">
      <p><?= $message; ?></p>
    </div>
  <?php endforeach; ?>
  <?php unset($_SESSION['flash']); ?>
<?php endif; ?>


在循环后取消设置…?抱歉,我倒了两行,因为我正在测试代码,但它不工作…如果我删除取消设置函数,我的代码工作正常。这很奇怪,这段代码对我来说工作正常。但是,作为一种解决方法,您可以执行
$flash=$\u SESSION['flash'];Unset($\u SESSION['flash']);
然后只使用$flash变量而不是$u SESSION['flash']来查看它是否有效。现在,您的register\u globals在php.ini上是打开还是关闭的?下面是上面的代码,您可以在线运行:当您在服务器上运行它时,这段代码会产生类似的结果吗?正如手册页上关于“register\u globals”的说明“在PHP官方网站上:从PHP5.3.0开始,此功能已被弃用,并从PHP5.4.0开始删除。
<?php
    if(isset($_SESSION['flash'])) {
        $flash = $_SESSION['flash'];
        unset($_SESSION['flash']);
        foreach($flash as $type => $message) {
            ?>
            <div class="alert alert-<?=$type?> bk-fullwidth-alert">
                <p><?=$message?></p>
            </div>
            <?php
        }
    }
?>