我正在尝试学习PHP和编程。 在我正在研究的书中有类似的东西: $ flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE;
$ flags用于split()方法。
第一个标志是:如果设置了这个标志,preg_split()将只返回非空的部分。 第二个是:如果设置了此标志,则将捕获并返回分隔符模式中的带括号的表达式。
他为什么不使用&&运营商,但| ?
你能解释一下|实际上呢?
据我所知,这些是
答案 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)
&安培;&安培;是逻辑“和” 但是|是一个按位