settype更改会话变量的值

时间:2014-02-22 14:36:18

标签: php session casting

我将会话变量初始化为$_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会更改它的值?

1 个答案:

答案 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()