我总是远离 stackoverflow 的答案和我所做的任何阅读,"==="
优于 "=="
因为使用了更多严格比较,您不会为了检查匹配而浪费资源转换值类型。
我的假设可能是错误的,所以我假设这个问题的一部分是“我的假设是真的吗?”
其次,
我正在专门处理以字符串 "100"
的形式从数据库中获取数据的情况。
我正在比较的代码是这样的......
if ($this->the_user->group == 100) //admin
{
Response::redirect('admin/home');
}
else // other
{
Response::redirect('user/home');
}
对比
if ( (int) $this->the_user->group === 100) //admin
{
Response::redirect('admin/home');
}
else // other
{
Response::redirect('user/home');
}
甚至
if (intval($this->the_user->group) === 100) //admin
{
Response::redirect('admin/home');
}
else // other
{
Response::redirect('user/home');
}
是否通过手动强制转换或转换获得任何完整性(或性能),以便您可以使用标识('==='
)比较?
最佳答案
在您的特定情况下,==
是更好的选择。正如您(在您的代码中可以看到)可能已经发现许多数据库函数将始终返回字符串,即使您获取整数也是如此。所以类型严格比较实际上只会使您的代码膨胀。
此外,您还增加了潜在的(我们称之为理论上的)安全风险。例如。 (int) '100AB2'
会产生 100
。在您的情况下,这可能不会发生,但在其他情况下可能会发生。
所以:不要过度使用严格比较,它并不总是好的。您主要只在模棱两可的情况下才需要它,例如 strpos
的返回值。
关于php - 身份条件 "==="、性能和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5853639/