为会话设置错误值时,将设置会话,但该值为空。类型是布尔值。这段代码:
<?php
session_start();
$_SESSION["IsMobile1"] = false;
$_SESSION["IsMobile2"] = true;
//header("location: ../../../index.php");
echo "IsSet1: " . isset($_SESSION["IsMobile1"]) . "; IsMobile1: " . $_SESSION["IsMobile1"] . "; type: " . gettype($_SESSION["IsMobile1"]) . ";<br>";
echo "IsSet2: " . isset($_SESSION["IsMobile2"]) . "; IsMobile2: " . $_SESSION["IsMobile2"] . ";<br>";
?>
打印出:
IsSet1: 1; IsMobile1: ; type: boolean;
IsSet2: 1; IsMobile2: 1;
我的PHP版本是5.5.13。这是预期的行为吗?我正在尝试使用代码阅读会议:
if (isset($_SESSION["IsMobile"]))
{
if (is_bool($_SESSION["IsMobile"]))
{
header("location: Mobile/");
exit;
}
}
但是它当然不起作用,因为IsMobile为空布尔值。(最初,我只使用IsMobile。IsMobile1和IsMobile2仅用于测试)。
我本人已经多次面对这个问题,尽管仍未得到证实,但我得出了这样的结论:
由于boolean
不能将type用作1或0的常量,因此会发生这种情况,以便int
在打印或进行任何其他输出尝试时将其强制转换为常量。但这只会发生在TRUE
。FALSE
始终(至少在大多数情况下)保持为空(我从未见过bool
var输出FALSE
)。
但是好消息是,如果您使用FALSE
在if
语句中定义的变量,它将被解释为FALSE
(如预期的那样)。
那么,如果要输出它们怎么办?
输出字符串:
if ($_SESSION["IsMobile"] == FALSE) {
echo "FALSE";
}
更新哦,是的,这是我在文档中错过的内容:
布尔TRUE值将转换为字符串“ 1”。布尔值FALSE将转换为“”(空字符串)。这允许在布尔值和字符串值之间来回转换。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句