在PHP中使用split方法中的两个标志。为什么|但不是&&amp ;?

时间:2013-01-20 20:08:36

标签: php bitwise-operators

  

可能重复:
  Reference - What does this symbol mean in PHP?

我正在尝试学习PHP和编程。 在我正在研究的书中有类似的东西:     $ flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE;

$ flags用于split()方法。

第一个标志是:如果设置了这个标志,preg_split()将只返回非空的部分。 第二个是:如果设置了此标志,则将捕获并返回分隔符模式中的带括号的表达式。

他为什么不使用&&运营商,但| ?

你能解释一下|实际上呢?

据我所知,这些是

2 个答案:

答案 0 :(得分:4)

&安培;&安培;是逻辑AND 而|是一个按位运算符。

当两个操作数都计算为 true 时,

a && b会对 true 进行评估。由于标志几乎总是大于1的数字,因此该表达式总是评估为 true

接受位掩码的函数如何工作

它们指定常量

请注意,这些常量必须具有2的幂:

FLAG_INT1 = 1
FLAG_INT2 = 2
FLAG_INT3 = 4
FLAG_INT4 = 8

您调用组合了一些标志的函数

myFunction(FLAG_INT1 | FLAG_INT3)

这会导致按位OR运算

   0001
OR 0100
=======
   0101

一个(或两个)操作数中的设置位( 1 )也会导致结果中的设置位( 1 )。

该函数在内部检查每个标志

这需要按位AND操作

    0101
AND 0001 // check for FLAG_INT1
========
    0001 // true

    0101
AND 0010 // check for FLAG_INT2
========
    0000 // false

    0101
AND 0100 // check for FLAG_INT3
========
    0100 // true

按位AND 要求两个操作数在位置X处设置一个位( 1 ),以便产生一个设置位( 1 )在X位置的结果中。

维基百科也有一篇关于常见位运算符的好文章:http://en.wikipedia.org/wiki/Bitwise_operation

答案 1 :(得分:0)

&安培;&安培;是逻辑“和” 但是|是一个按位