PHP - unset 函数在我的代码之前取消设置我的 var
Posted
技术标签:
【中文标题】PHP - unset 函数在我的代码之前取消设置我的 var【英文标题】:PHP - unset function unsets my var before my code 【发布时间】: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; ?>
谢谢大家的帮助!
【问题讨论】:
在循环之后取消设置...? 【参考方案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 起已删除。以上是关于PHP - unset 函数在我的代码之前取消设置我的 var的主要内容,如果未能解决你的问题,请参考以下文章