Вопрос с интервью: В php, 123 == 0123?

Я ответил, что это неверно. тогда он спросил, почему? я не мог ответить. Может ли кто-нибудь ответить? Мне очень интересно это узнать.

Solutions Collecting From Web of "Вопрос с интервью: В php, 123 == 0123?"

Префикс числа с 0 указывает восьмеричную (база 8), почти так же, как 0x указывает шестнадцатеричный (основание 16).

Этот код:

 var_dump(123); var_dump(0123); 

вы получите:

 int 123 int 83 

Это связано с тем, что 0123 является восьмеричной нотацией (из-за 0 в начале) , а 123 – десятичной.

Для получения дополнительной информации вы можете ознакомиться с разделом Integer руководства.

Еще более сложный вопрос состоял в том, чтобы спросить, например, о 79 и 079 :

 var_dump(79); var_dump(079); 

вы получите:

 int 79 int 7 

( 9 – не действительная цифра в восьмеричном ;-))

1) Когда мы используем == operator в php, он проверяет, равны ли значения. Итак, 5 == "5" => true 2) Когда мы используем === operator в php, он проверяет, равны ли значения и типы данных. Итак, 5 === "5" => false

123 == 0123 => false ТАКЖЕ 123 === 0123 => false

123 – десятичное число: 123 0123 – восьмеричное число (начиная с 0): 83

123 не равно 83

Потому что 0123 означает «123 в восьмеричном (основание 8)», что равно 83 в десятичном значении.

0123 обозначение для восьмеричного числа (83 десятичных, с верхней части головы), а 123 – десятичное число. Поэтому они не равны.