PHP代码中的管道签名

PHP代码中的管道签名,php,Php,我想连接两个变量,但由于错误,我输入了另一个代码,得到了一个奇怪的结果 下面是代码: echo 'Hello World' | 'test'; Result : |e|o World 如果不连接管道符号,管道符号会做什么?它是或按位运算符 如果你想压缩字符串,你应该使用dot echo "ABC" . "DEF"; 或按位使用示例 // base 16 - result in 0x03 $result = 0x01 | 0x02; // base 2 0000 0001 0000 001

我想连接两个变量,但由于错误,我输入了另一个代码,得到了一个奇怪的结果

下面是代码:

echo 'Hello World' | 'test';

Result : |e|o World

如果不连接管道符号,管道符号会做什么?

它是
按位运算符

如果你想压缩字符串,你应该使用
dot

echo "ABC" . "DEF";
按位使用示例

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

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

我猜它是一个按位OR,意思是“按位OR”,它将字符串转换成二进制,然后将它们相互叠加,以使用逻辑OR计算每个位置的结果,即,如果任一字符串在该位置有一个1,则结果将有一个1,否则,您将得到一个0

在本例中,它使用每个字符的数字ascii字符代码来执行此操作,这有时会导致新的字符代码,有时会导致无法渲染的垃圾。这就是为什么“Hello world”的开头很混乱,上面覆盖了“test”,但结尾很好,因为在这一点上没有任何1被另一个字符串添加到它。请参阅手册中更详细的示例(使用XOR,但思路相同)

使用。用于连接。

根据

“|”是一个“按位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
如果您注意到我们在8、2和1列中设置了3位。。把这些加起来就是8+2+1,得到11

对于纯字符串连接,请使用点
运算符


希望能澄清。

用什么语言连接?据我所知,大多数语言不使用
连接字符串。通常它使用
+
@billymon-Oracle使用双栏:
|
可能的超级复制方式让我理解。。我很困惑为什么1 | 1=2,1 | 3=3?你教得很好。上帝保佑你:)