php bool echo输出

时间:2012-04-18 05:45:03

标签: php

我有一个奇怪的问题。

如果有函数执行此操作则返回值

public function isVipCustomer($customer_id){
        $cus_vip_id=FALSE;
        $sql="SELECT customerid FROM customers WHERE is_vip='1' 
                AND customerid='".$customer_id."' LIMIT 0,1 ";  
        $result= $this->db->query($sql);

        while($row=mysqli_fetch_assoc($result)){
            $cus_vip_id=(int)$row['customerid'];    
        }

        if($cus_vip_id!=0)
            return TRUE;
        else
            return FALSE;

    }

当我打电话

$customer_id=13;
echo $collection->isVipCustomer($customer_id);

当它为真时它输出1但是当它为假时它是空的,期望输出为0

为什么?

3 个答案:

答案 0 :(得分:2)

从PHP文档:

  

布尔值TRUE值转换为字符串“1”。布尔值为FALSE   转换为“”(空字符串)。这允许转换回来   在布尔值和字符串值之间。

http://www.php.net/manual/en/language.types.string.php

要使用类型打印返回值,请尝试使用var_dump($myVar)

答案 1 :(得分:1)

将布尔值转换为字符串时,true会将"1"false转换为""(空字符串)。

http://php.net/manual/en/language.types.string.php#language.types.string.casting

您的期望不正确。

答案 2 :(得分:0)

这就是将bool转换为字符串时PHP的作用 试试这个:

echo $collection->isVipCustomer($customer_id) ? 1 : 0;

或者,如果您只是想输出一些用于调试目的而且想要有明确的错误标志,请使用:

var_dump($collection->isVipCustomer($customer_id));

这将输出bool(true)bool(false)