2014-02-22 84 views
2

我有一个会话变量,初始化为$_SESSION["total"]=0。我试图通过使用settype()函数来获得它的价值。但是,它呼应了价值1我的代码是:settype更改会话变量的值

<?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

@ShankarDamodaran这只是一个示例代码。 –

回答

2

settype()返回一个布尔值,而不是实际值本身。您看到的1是布尔输出TRUE

下面的代码应该做你想要什么:

$_SESSION["total"] = 0;  
$session_val = $_SESSION["total"]; 

$ok = settype($session_val,"integer"); 

if ($ok) { 
    echo $session_val; // => 0 
} 

虽然没有相关的实际问题,你想要在你的脚本的最顶部添加session_start()如果你要处理的会话。

+1

这是正确的Amal ** + 1 ** –