switch - php ternary operator
Pregunta de la entrevista: En PHP, es 123== 0123? (5)
He respondido que es falso. luego preguntó por qué? no pude contestar ¿Alguien puede hacer la respuesta? Estoy muy interesado en aprenderlo.
0123 es una notación para un número octal (83 decimal, fuera de mi cabeza), mientras que 123 es un número decimal. Por lo tanto, no son iguales.
1) Cuando usamos el operador == en php, comprueba si los valores son iguales. Entonces 5 == "5" => verdadero 2) Cuando usamos el operador === en php, verifica si los valores y los tipos de datos son iguales. Entonces 5 === "5" => falso
123 == 0123 => falso TAMBIÉN 123 === 0123 => falso
123 es el número decimal: 123 0123 es un número octal (ya que comienza con 0): 83
123 no es igual a 83
El prefijo de un número con 0
indica octal (base 8), de la misma manera que 0x
indica hex (base 16).
Este codigo
var_dump(123);
var_dump(0123);
te conseguirá
int 123
int 83
Esto se debe a que 0123
es notación octal (debido al 0
al principio) , mientras que 123
es decimal.
Para obtener más información, puede consultar la sección Integer del manual.
Una pregunta aún más complicada hubiera sido preguntar sobre 79
y 079
, por ejemplo:
var_dump(79);
var_dump(079);
te conseguirá
int 79
int 7
( 9
no es un dígito válido en octal ;-))
Porque 0123 significa "123 en octal (base 8)", que es 83 en decimal.