我有一个奇怪的问题。
如果有函数执行此操作则返回值
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
为什么?
答案 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)