【问题标题】:PHP Comparison for one less thanPHP 比较小于一
【发布时间】:2019-07-07 08:06:23
【问题描述】:

Google 真的让我失望了。我想对小于或大于 1 进行比较。所以我可以检测说值 B 是比 A 小一还是大一。

if (A is one less than B || A is one greater than B) {
 return true
}

这就是我想做的。

【问题讨论】:

    标签: php comparison operators


    【解决方案1】:

    如果你总是想检查它是上一还是下一,区分两者,看看结果的绝对值是否为一。

    if (abs($a - $b) === 1) {
        // Do your thing
    }
    

    看到这个live demo

    【讨论】:

      【解决方案2】:

      做一个标准的平等测试。

      只需对要比较的值执行减法或加法即可。

      3 === (4-1)
      

      【讨论】:

      • 这是不正确的。假设 A = 3 和 B = 4。op 要求检查 $B 是否比 A 小或大 1。所以如果 B =2,op 想要为真,但这个算法将返回假。
      • @MuhammadAzizolAminuddin — || 的另一面留给读者一个简单而明显的练习。
      • 同意,但是最好提一下第二部分,这样新程序员就知道它的另一部分了。
      • 它可能应该同时完成。它应该检测是否有任何东西小于或大于该值。
      • @Hasen — 如果您认为它需要灌输整个内容,而不仅仅是解释原理,请随意编辑它。它社区维基。
      【解决方案3】:

      类似的东西。只要$a$b的区别是1

      if(abs($a - $n) == 1) {...}
      

      【讨论】:

        【解决方案4】:

        翻译你的伪条件:

        (A is one less than B) or (A is one greater than B)
        

        这变成:

        if ( $A === $B-1 || $A === $B+1 ) {
          return true;
        }
        

        【讨论】:

        • 不是我的反对意见,但是那个三元运算符引起的混乱比它解决的要多。它还需要在每个子组周围加上括号才能正常工作。
        • @Qirel 不需要括号,我在发布之前已经测试过了。但我同意,三元可能更难理解,看起来很乱。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-18
        • 1970-01-01
        • 2021-12-29
        • 2013-03-26
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多