我将会话变量初始化为$_SESSION["total"]=0
。我试图通过使用settype()
函数来获取它的值。但是,它将价值回应为1.我的代码是:
<?php
session_start();
$_SESSION["total"]=0;
$session_val = settype($_SESSION["total"],"integer");
echo $session_val; //this outputs 1 rather than 0
$session_val = (int)$_SESSION["total"];
echo $session_val; //this outputs 0 correctly
?>
因此,在通过(int)
进行转换时会产生正确的结果,为什么使用settype
会更改它的值?
答案 0 :(得分:2)
settype()
返回一个布尔值,而不是实际值本身。您看到的1
是布尔输出TRUE
。
以下代码应该执行您想要的操作:
$_SESSION["total"] = 0;
$session_val = $_SESSION["total"];
$ok = settype($session_val,"integer");
if ($ok) {
echo $session_val; // => 0
}
虽然与实际问题无关,但如果您打算处理会话,则需要在脚本的最顶部添加session_start()
。