ternario switch operator operador empty diferente comparar php comparison

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.