【发布时间】:2013-05-30 08:32:56
【问题描述】:
我正在审查一个合作伙伴的 php 代码,就像:
function query_db($form)
{
$result = (int)false;
try{
$sqlQuery = " SELECT id_user, id_access, name, email, status FROM users ";
$sqlQuery .= " WHERE id_access> 0 ";
if($form->get("limit")){
$sqlQuery .= " LIMIT ".$form->get("start")." , ".$form->get("registry");
}
$query = $this->db->query($sqlQuery);
return $query;
} catch (Exception $e) {
$result = (int)false;
}
return $result;
}
所以一开始他使用$result = (int)false;
我正在调查这条指令,发现:
仅当字符串为空或包含 单个字符 0. 如果它包含任何其他数据——甚至是多个零——它会被转换为 true。
当转换为数字或字符串时,布尔值变为 1,如果它是 为真,否则为 0。
回到问题:
echo 0 + 1; // 1
echo false + 1; // 1
echo 0 > -1; // true
echo false > -1; // false
echo (int)false > -1; // true
那么为什么他在这个世界上投射它而不是使用$result = 0; 我的意思是,我不明白,也许它有更深层次的含义,我没有看到这个。
这就是我问你意见的原因。
【问题讨论】:
-
他可能不记得 0 是 false 还是 -1...所以他让语言为他做这件事。
-
但不是标准使用 0 为假,1 为真,-1 是错误,或者我错了
-
是的,你错了,布尔值只有 2 个值:FALSE (0) / TRUE(不是 0)。 -1 或其他是 INTEGER 值的人。要知道函数究竟返回了什么,你应该仔细阅读文档而不是猜测。
-
@cMinor 我不是说他的做法是对的,我只是想猜测什么会迫使某人做如此荒谬的事情
-
好吧,我的意思是当不使用布尔值时,我的意思是整数,(0 false),(1 true),(-1 error),我理解布尔值只能是真或假
标签: php codeigniter boolean logic