tutorial - Diferencia entre & y &&& en PHP




php wikipedia (4)

Estoy confundido con & && . Tengo dos libros de PHP. Uno dice que son iguales, pero el otro dice que son diferentes. Pensé que también son iguales.

¿No son los mismos?


Como dicen los demás, un single & es poco sabio. Básicamente, convierte el valor de la mano izquierda en su representación de bits, y el lado derecho también en la representación de bits, luego ejecuta un AND lógico entre ellos y genera el resultado.

Double && es verdadero o falso, (en algunos idiomas 0 o 1) si tanto el lado izquierdo como el derecho son verdaderos (o no cero).

También agregaría que esto no es solo en PHP. Es así en muchos otros muchos idiomas, como C, Java, Ruby , etc.


Las otras respuestas son correctas, pero incompletas. Una característica clave de AND lógico es que cortocircuita, lo que significa que el segundo operando solo se evalúa si es necesario. El manual de PHP da el siguiente ejemplo para ilustrar:

$a = (false && foo());

foo nunca será llamado, ya que el resultado es conocido después de evaluar falso. Por otro lado con

$a = (false & foo());

foo llamará foo (también, el resultado es 0 en lugar de falso).


&& se realiza & ejecuta en operandos reducidos a 1 o 0 .

(En otras palabras, && es un operador bitwise bajo la advertencia de que cambia sus operandos. Es decir, las operaciones lógicas son un subconjunto de operaciones bitwise).


& es bitwise Y. Ver Operadores de Bitwise . Asumiendo que haces 14 & 7 :

    14 = 1110
     7 = 0111
    ---------
14 & 7 = 0110 = 6

&& es lógico AND. Ver Operadores Lógicos . Considera esta tabla de verdad:

 $a     $b     $a && $b
false  false    false
false  true     false
true   false    false
true   true     true




php