“是什么意思?”|&引用;在这个PHP代码中?

“是什么意思?”|&引用;在这个PHP代码中?,php,Php,可能重复: 下面是PHP代码: <?php $a = $b['key'] | 0; ?> 是接线员吗 其按位或,如定义 例如: Bitwise Inclusive OR ( 5 = 0101) = ( 0 = 0000) | ( 5 = 0101) ( 5 = 0101) = ( 1 = 0001) | ( 5 = 0101) ( 7 = 0111) = ( 2 = 0010) | ( 5 = 0101) ( 5 = 0101) = ( 4 = 0100) | (

可能重复:

下面是PHP代码:

<?php 
    $a = $b['key'] | 0;
?>


是接线员吗

其按位或,如定义

例如:

 Bitwise Inclusive OR
( 5 = 0101) = ( 0 = 0000) | ( 5 = 0101)
( 5 = 0101) = ( 1 = 0001) | ( 5 = 0101)
( 7 = 0111) = ( 2 = 0010) | ( 5 = 0101)
( 5 = 0101) = ( 4 = 0100) | ( 5 = 0101)
(13 = 1101) = ( 8 = 1000) | ( 5 = 0101)
|
是一个函数


|
是一个

它是按位OR运算符

有关更多详细信息,请参见此处:

|
是OR运算符

但是,按位或以零(
|0
)进行运算没有任何意义,因为它不会翻转任何位。也许写这篇文章的人只是一个非常糟糕的程序员,他试图用这种方式将字符串转换成整数。他应该用
(字符串)
来代替


代码的原始作者可能打算放入另一个
,使其成为逻辑OR(
|
),因为按位OR和0对输出没有任何影响。尽管这没有任何意义,但他可能只需要得到相同的结果。

是一个位运算符()

|
表示“设置了
$b['key']
0
中设置的位。”


因为第二部分是零,所以只有当
$b['key']
也为零时,它才会返回
false

PHP文档怎么说?这是一个按位运算符。它在编程语言中几乎是一个标准。看。当您看到不认识的操作员时,请先查看操作员手册。:)@网络编码器否,xor将是
^
。这是一个按位or;)@netcode——它是一个按位包含的函数,或者OP询问的是
|
**而不是
|
@TJHeuvel Tks。这是一个很好的例子。现在我接接线员。但我不知道为什么要用它来代替
|
。。由于数组应包含一个整数。如果
$b['key']
值存在但为空(null),则此构造允许将0而不是null分配给$a(可能对数据库有用)。@NikiC,tks。你所说的“它不会翻转任何比特”到底是什么意思?比如说,如果$b['key']是整数“345”,那么在这个代码中分配给$a的是什么?是整数“3450”吗?这个接线员对我来说很奇怪。@Tom:它将被分配到345。没有什么变化。这就是为什么做
|0
有点毫无意义;)