Я ответил, что это неверно. тогда он спросил, почему? я не мог ответить. Может ли кто-нибудь ответить? Мне очень интересно это узнать.
Префикс числа с 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 – десятичное число. Поэтому они не равны.