【问题标题】:PHP - unset function unsets my var before my codePHP - unset 函数在我的代码之前取消设置我的 var
【发布时间】:2016-04-08 16:20:00
【问题描述】:

我想使用 unset 函数清除我的会话 vqriqble “flash”,但现在我无法打印我的 flash 消息,因为在我之前的代码之前调用了 unset 函数。 它在我的标题模板中被调用: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; ?>

谢谢大家的帮助!

【问题讨论】:

  • 在循环之后取消设置...?

标签: php function unset


【解决方案1】:

试试这个。问题是 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; ?>

编辑:试试这个

<?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
        }
    }
?>

【讨论】:

  • 抱歉,我倒置了两行,因为我正在测试代码但它不起作用......
  • 如果我删除未设置的功能,我的代码工作正常。
  • 这很奇怪,这段代码对我来说很好用。但是,作为一种解决方法,您可以执行$flash = $_SESSION['flash']; unset($_SESSION['flash']);,然后仅使用 $flash 变量而不是 $_SESSION['flash'] 来查看它是否有效。现在,just for curiousity,您的 register_globals 在 php.ini 上是打开还是关闭?
  • 这是上面的代码,您可以在线运行:phpfiddle.org/main/code/v1yz-w5dn 当您在服务器上运行这段代码时,它会产生类似的结果吗?
  • 正如 PHP 官方网站上的“register_globals”手册页所说:此功能自 PHP 5.3.0 起已弃用,自 PHP 5.4.0 起已删除。
猜你喜欢
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 2019-05-11
  • 2021-03-31
  • 2015-10-16
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多