Если у меня есть переменная в PHP, содержащая 0001
и я добавляю 1 к ней, результат равен 2 вместо 0002
.
Как решить эту проблему?
$foo = sprintf('%04d', $foo + 1);
Вероятно, это поможет вам понять типы данных PHP и то, как они влияют на операции с переменными различных типов. Вы говорите, что у вас «переменная в PHP говорит 0001», но какой тип этой переменной? Вероятно, строка «0001», поскольку целое число не может иметь это значение (это всего лишь 1). Поэтому, когда вы это делаете:
echo ("0001" + 1);
… оператор +
говорит: «Hm, это строка и целое число. Я не знаю, как добавить строку и int. Но я знаю, как преобразовать строку INTO в int, а затем добавить два ints вместе, так позвольте мне сделать это », а затем он преобразует« 0001 »в 1. Почему? Поскольку правила PHP для преобразования строки в целое число говорят, что любое количество ведущих нулей в строке отбрасывается. Это означает, что строка «0001» становится равной 1.
Тогда +
говорит: «Эй, я знаю, как добавить 1 и 1. Это 2!» и вывод этого утверждения равен 2.
Другим вариантом является функция str_pad () .
$text = str_pad($text, 4, '0', STR_PAD_LEFT);
<?php #how many chars will be in the string $fill = 6; #the number $number = 56; #with str_pad function the zeros will be added echo str_pad($number, $fill, '0', STR_PAD_LEFT); // The result: 000056 ?>