管道签到PHP代码

时间:2012-03-17 12:21:32

标签: php

我想连接2个变量,并且错误地输入了另一个代码,我得到了一个奇怪的结果。

这就像代码:

echo 'Hello World' | 'test';

Result : |e|o World

如果没有连接,管道标志会做什么?

4 个答案:

答案 0 :(得分:5)

这是OR按位运算符

如果你想连结字符串,你应该使用dot

echo "ABC" . "DEF";

OR按位使用

的示例
// base 16 - result in 0x03
$result = 0x01 | 0x02;

// base 2
0000 0001
0000 0010
---------
0000 0011

答案 1 :(得分:5)

根据PHP manual

“|”是一个“按位OR”。按位运算符允许评估和操纵整数内的特定位。

 Example          Name                            Result
 $a | $b      Or (inclusive or)     Bits that are set in either $a or $b are set.

示例:

$a =    9;
$b =    10;
echo $a | $b;

这将输出数字11,如下所示:

                                      1 Byte ( 8 bits )
Place Value            128    64    32    16    8    4    2    1
$a                       0     0     0     0    1    0    0    1    =    9
$b                       0     0     0     0    1    0    1    0    =   10
$a | $b                  0     0     0     0    1    0    1    1    =   11

如果您注意到我们设置了3位,则在8列,2列和1列中添加8 + 2 + 1,然后得到11。

仅用字符串连接时,请使用点.运算符。

希望澄清它。

答案 2 :(得分:3)

那个|表示'按位OR',它将字符串转换为二进制,然后将它们相互叠加以使用逻辑OR为每个位置计算结果,即如果任一字符串在该位置具有1,则结果将具有1,否则,你会得到一个0。

在这种情况下,它使用每个字符的数字ascii字符代码执行此操作,这有时会导致新的字符代码,有时会导致无法呈现的垃圾。这就是为什么'Hello world'的开头搞砸了,它被'test'覆盖了,但结尾很好,因为它没有在那个时候用另一个字符串添加任何1。有关手册中更详细的示例,请参阅here(使用XOR,但想法相同)。

使用。连接。

答案 3 :(得分:1)

我猜这是一个按位OR