我想连接2个变量,并且错误地输入了另一个代码,我得到了一个奇怪的结果。
这就像代码:
echo 'Hello World' | 'test';
Result : |e|o World
如果没有连接,管道标志会做什么?
答案 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)
“|”是一个“按位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