提问人:okunade yusuf 提问时间:11/13/2023 最后编辑:Nigel Renokunade yusuf 更新时间:11/13/2023 访问量:78
使用 PHP null 合并和三元运算符重置会话时出现问题 [重复]
Problem using PHP null coalescing together with ternary operator to reset a Session [duplicate]
问:
我正在尝试使用以下代码重置会话:
<?=
$_SESSION['pettySuccess']??'';
(($_SESSION['pettySuccess']??'')=='') ?'': unset($_SESSION['pettySuccess']);
?>
我的代码背后的想法是让 pettySuccess 会话在计算结果未为 ' ' 时重置会话 但在这里我遇到了一个语法错误。奇怪的是当我更改 unset() 方法时 到 session_unset(),我不再有语法错误,我现在得到的错误是“session_unset() 不接受任何属性”,我的意图是永远不要重置我所有的会话变量。
答:
1赞
noah1400
11/13/2023
#1
unset()
是一个语句而不是一个函数,因此它不能直接在三元运算符中使用。您可以使用以下代码:
if (isset($_SESSION['pettySuccess']) && $_SESSION['pettySuccess'] !== '') {
unset($_SESSION['pettySuccess']);
}
0赞
Álvaro González
11/13/2023
#2
我不知道你的业务逻辑是什么,但我怀疑你所需要的只是:
unset($_SESSION['pettySuccess']);
unset() 是一种语言结构,因此它能够检测和忽略缺失的变量(这是常规函数无法做到的),而且它确实如此(是的,不幸的是它没有记录)。
评论
if ($_SESSION['pettySuccess'] !== '') unset($_SESSION['pettySuccess']);
$_SESSION['pettySuccess']??'';
它本身并不能完成任何事情,你不会将生成的值存储在任何地方。