【问题标题】:php pipe equals for number [duplicate]php管道等于数字[重复]
【发布时间】:2015-11-09 16:45:58
【问题描述】:

嗯,我知道 |将在 php 中表示“或”;然而,当我试图让它与数字一起工作时,事情变得很奇怪。

你可能想试试下面的代码:

<?php 
    $i = 101;
    $i |= 7;
    echo $i; // output: 103 ?! why?!
?>

【问题讨论】:

  • 你到底想做什么?正如奥尔德林所说,这是一个按位或,你想要一个比较 OR - $i || 7;

标签: php pipe


【解决方案1】:

当您将| 传递给值时,它将转换为二进制。更多请参考What Does Using A Single Pipe '|' In A Function Argument Do?

解释:

Decimal             Binary
101                 1100101
7                   111

这些值中的OR (|) 操作:

64  32  16  8  4  2  1  =   Value
1   1   0   0  1  0  1  =   101
               1  1  1  =   7
-------------------------------
1   1   0   0  1  1  1  =   103

【讨论】:

  • 您在回答任何问题时应该在此处说明,而不是参考其他问题/答案。
  • @b0s3 谢谢老兄!更新了!
【解决方案2】:

它是一个bitwise OR 运算符。说明:

101 的二进制是:01100101,位值是:64+32+4+1

7 的二进制是:111,位值是:4+2+1

两个值组合在一起将是:64+32+4+2+1 = 103

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2014-01-20
    • 2013-10-01
    • 1970-01-01
    相关资源
    最近更新 更多