Я ответил, что это неверно. тогда он спросил, почему? я не мог ответить. Может ли кто-нибудь ответить? Мне очень интересно узнать это.
Вопрос с интервью: В php, 123 == 0123?
Ответ 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 - десятичное число. Поэтому они не равны.