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

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

22 голосов
/ 11 сентября 2009

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

Ответы [ 5 ]

68 голосов
/ 11 сентября 2009

Этот код:

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

24 голосов
/ 11 сентября 2009

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

5 голосов
/ 11 сентября 2009

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

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

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

123 не равно 83

2 голосов
/ 11 сентября 2009

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

2 голосов
/ 11 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...