2012-03-17 15 views
8

Quería concatenar 2 variables, y por error escribí otro código y obtuve un resultado extraño.Pipe sign in Código PHP

Esto es lo que parece el código:

echo 'Hello World' | 'test'; 

Result : |e|o World 

Qué hacer el signo de la tubería si no concatenado?

+2

http://www.php.net/manual/en/language.operators.bitwise.php –

+1

¿en qué idioma 'concatena? –

+2

Hasta donde yo sé, la mayoría del lenguaje no usa '|' para concat string. Normalmente usa '.' o' + ' – Rezigned

Respuesta

5

De acuerdo con la PHP manual

"|" es un "OR a nivel de bit". Los operadores bit a bit permiten la evaluación y manipulación de bits específicos dentro de un entero.

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

Ejemplo:

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

Esto haría salida el número 11 como sigue:

         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 

Si nota hemos establecido 3 bits, en la 8, 2, y 1 columna .. sume esos 8 + 2 + 1 y obtiene 11.

Para la mera concatenación de cadenas use el operador dot ..

Espero que lo aclare.

+0

excelente manera de hacerme entender ... Estaba tan confundido por qué 1 | 1 = 2 y 1 | 3 = 3? Y tu me enseñaste bien Dios te bendiga :) – MFarooqi

5

Es la operadora OR bit a bit

Si desea concat cadena que se debe utilizar dot

echo "ABC" . "DEF"; 

Ejemplo de uso OR bit a bit

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

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

yo supongo que es un OR

3

Eso | significa 'O a nivel de bit', que convertirá las cadenas en binarias, luego las superpondrán entre sí para calcular el resultado usando OR lógico para cada posición, es decir, si cualquiera de ellas tiene un 1 en esa posición, el resultado tendrá un 1, de lo contrario obtendrá 0 0.

En este caso, está haciendo esto con los códigos de caracteres ascii numéricos de cada carácter, lo que a veces lleva a nuevos códigos de caracteres y a veces a basura, que no se procesarán. Esta es la razón por la cual el comienzo de 'Hola mundo' está en mal estado, donde está superpuesto con 'prueba', pero el final está bien porque no tiene ningún 1 añadido por otra cadena en ese punto. Consulte here para obtener un ejemplo más detallado del manual (utiliza XOR, pero la misma idea).

Uso. para la concatenación