типы — Оператор деления в переполнении стека

Я случайно делаю оператор деления в PHP так:

$a = 012; //or 0012 or even 00012
echo $a/4;
echo gettype($a/4);

Я получил вывод: 2.5 double, // Я не знаю, почему вывод 2.5,

Я попробовал еще раз:

$a=12;
echo $a/4;
echo gettype($a/4);

Это будет выводить 3 Integer,

Я прочитал документацию в https://secure.php.net/manual/en/language.operators.arithmetic.php но до сих пор не могу этого понять.

Кто-нибудь может мне помочь?

0

Решение

Значение, которое звезд с нуля, является восьмеричным. Так 012 в восьмеричном 10 в десятичном. 10 разделить 4 на 2,5.

9

Другие решения

Одна вещь, которую вы можете сделать, это очистить значение $ a перед его использованием.

$a = ltrim($a, '0');

Это удалит все предыдущие 0 и означает, что 012 => 12 и не 10 когда вы приведете его к Int

например

$a = 0012;
$a = ltrim($a, '0');
echo $a/4;
echo gettype($a/4);
0

По вопросам рекламы [email protected]