Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

Этот код:

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 не является допустимой цифрой в восьмеричном;-))

Ответ 3

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

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

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

123 не равно 83

Ответ 4

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

Ответ 5

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