php - 身份条件 "==="、性能和转换

标签 php performance comparison fuelphp

我总是远离 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/

相关文章:

java - Android 实例变量

performance - mongodb 许多插入\更新性能

java - 优化文件下载

java - "package"和 "module"有什么区别?

c# - 我怎么知道 "assembly"是否真的改变了?

php - WordPress 数据库内存错误

php - 生成对象的唯一 ID,该 ID 在各个实例中保持不变

java - 大于/小于在内部工作的程度

php - 在 Laravel 5 中发送大量数组数据时 RouteCollection.php 中的 MethodNotAllowedHttpException 错误

php - 将 MySQL 用于图库的最佳方式?