Если у меня есть переменная в PHP, содержащая 0001
, и я добавляю 1 к ней, результат равен 2 вместо 0002
.В PHP, как добавить к нулевой заполненной числовой строке и сохранить нулевое дополнение?
Как решить эту проблему?
Если у меня есть переменная в PHP, содержащая 0001
, и я добавляю 1 к ней, результат равен 2 вместо 0002
.В PHP, как добавить к нулевой заполненной числовой строке и сохранить нулевое дополнение?
Как решить эту проблему?
$foo = sprintf('%04d', $foo + 1);
Другой вариант - это функция str_pad().
$text = str_pad($text, 4, '0', STR_PAD_LEFT);
Это, вероятно, поможет вам понять типы данных PHP и как они влияют, когда вы делаете операции с переменными различных типов. Вы говорите, что у вас «переменная в PHP говорит 0001», но какой тип этой переменной? Вероятно, строка «0001», поскольку целое число не может иметь это значение (это всего лишь 1). Так что, когда вы это делаете:
echo ("0001" + 1);
... оператор +
говорит: «Хм, это строка и целое, я не знаю, как добавить строку и Int, но я знаю, как.. чтобы преобразовать строку INTO в int, а затем добавить два int вместе, так что позвольте мне сделать это », а затем он преобразует« 0001 »в 1. Почему? Поскольку правила PHP для преобразования строки в целое число говорят, что любое количество ведущих нулей в строке отбрасывается. Это означает, что строка «0001» становится равной 1.
Затем +
говорит: «Привет, я знаю, как добавить 1 и 1. Это 2!» и выход этого отчета равен 2.
Вы не решили проблему, но приятно объяснили. :) – DanMan
<?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
?>
Спасибо, отлично работал. – Ryan