“是什么意思?”|&引用;在这个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
有点毫无意义;)