我长期以来的理解是,基本上从不使用==,因为它不尊重类型,最终可能导致不良结果。
我刚刚阅读了有关一般比较的文章 How do the PHP equality (== double equals) and identity (=== triple equals) comparison operators differ?
但是不确定每个人是否和我有相同的看法。
这是我遇到的情况:
原始代码
$state = (intval($state) === TIMESHEET_STATE_UNLOCKED) ? 'unlock' : 'lock';
我们发现此行无效,因为常量TIMESHEET_STATE_UNLOCKED是布尔值,而$ state是字符串'0'或'1'。我们可以通过以下两种方法之一来解决此问题:
$state = (intval($state) === intval(TIMESHEET_STATE_UNLOCKED)) ? 'unlock' : 'lock';
OR
$state = ($state == intval(TIMESHEET_STATE_UNLOCKED)) ? 'unlock' : 'lock';
我的第一个倾向是前者,但我现在不确定。