-2

可能重复:
参考 - 这个符号在 PHP 中是什么意思?

我正在尝试学习 PHP 和编程。在我正在学习的书中,有这样的内容: $flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE;

$flags 用于 split() 方法。

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

为什么他不使用 && 运算符而是 | ?

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

据我所知,这些是

4

2 回答 2

4

&& 是逻辑与,而 | 是位运算符。

a && b当两个操作数都计算为true时,计算为true。由于标志几乎总是大于 1 的数字,因此该表达式总是计算为true

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

他们指定常量

请注意,这些常数必须是 2 的幂:

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

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

myFunction(FLAG_INT1 | FLAG_INT3)

这导致按位或运算

   0001
OR 0100
=======
   0101

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

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

这需要按位与运算

    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

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

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

于 2013-01-20T20:14:40.723 回答
0

&& 是逻辑“与”,但 | 是按位的

于 2013-01-20T20:12:52.037 回答