$y = 013; echo $y + 5; //this result in 16
Я не могу понять, как его асс 16? Может ли кто-нибудь помочь?
потому что 013 не десятичный (основание 10). это восьмеричное (база 8). значение в десятичной форме: (0 * 8 ^ 2) + (1 * 8 ^ 1) + (3 * 8 ^ 0) = 0 + 8 + 3 = 11
который дает правильный (хотя и неожиданный, по крайней мере, вам) результат 16 при добавлении к 5.
нравственность рассказа: не добавляйте числовое число с 0, если вы не знаете, что это значит
число с начальным нулем – восьмеричное число
как
$a = 0123; // octal number (equivalent to 83 decimal
Целые числа могут быть указаны в десятичной (базовая 10), шестнадцатеричной (базовая 16) или восьмеричной (базовая 8) нотации, необязательно предшествующей знаку (- или +).
Чтобы использовать восьмеричную нотацию, перед номером следует указать 0 (ноль). Для использования шестнадцатеричной нотации предшествует номер с 0x.
$ y = 013; echo $ y + 5;
013 – это восьмеричное число, все число целых чисел php – восьмеричное.
показать эту ссылку. первый.