2009-11-13 98 views
2

php如何转换布尔变量?php如何转换布尔变量?

我试图布尔值保存到一个数组:

$result["Users"]["is_login"] = true; 

但是当我使用调试is_login值为空。 当我做条件如:

if($result["Users"]["is_login"]) 

条件总是错误的。

然后我试着这样做:

$result["Users"]["is_login"] = "true"; 

和它的工作。

这没什么大不了,但是当我从函数返回布尔值时,我仍然必须将它们转换为字符串。

+1

你正在序列化,转换为JSON或类似之间的某个地方吗?如果不是,不应该涉及到投射 - 你正在将一个值存储在一个数组中并且数组不关心如果在设置$ result [“Users”] [“is_login”] = true之后,您立即将其置于if条件中,如果条件为s会发生火灾。 – 2009-11-13 03:35:12

+0

这将有助于在保存布尔值和if之间发布所有内容。 – andyk 2009-11-13 03:48:03

回答

9

没有投

if($result["Users"]["is_login"]) 

应该工作。 您可以尝试使用var_dump($result["Users"]["is_login"]);以确保变量设置正确。

您可以通过使用issetmanual)函数检查是否设置了变量。你

也可以找到here PHP如何评估布尔:

When converting to boolean, the following values are considered FALSE: 

the boolean FALSE itself 
the integer 0 (zero) 
the float 0.0 (zero) 
the empty string, and the string "0" 
an array with zero elements 
an object with zero member variables (PHP 4 only) 
the special type NULL (including unset variables) 
SimpleXML objects created from empty tags 
Every other value is considered TRUE (including any resource). 
0

没有铸造发生在你的榜样。
您的问题可能在其他地方。

你介意分享一个更完整的代码吗?

+1

应该是一个注释 – 2009-11-13 03:39:23

0

尝试:


if((bool)$result["Users"]["is_login"] == true) 
{ 
    // do something 
} 

和回复邂逅之一:

但是当我使用调试is_login值为空。当我不喜欢条件语句:

if($result["Users"]["is_login"])

因为你的返回值是布尔值true,在PHP它并没有为它的表示,因此显示为空(mainwhile,如果该值是一个布尔false,那么你会看到一个0

+0

Au contraire,当输出布尔值'false'将是空白,'true'将是'1'。 – deceze 2009-11-13 06:02:06