В PHP, как я могу добавить нумерованную цифровую строку и сохранить нулевое дополнение?

Если у меня есть переменная в PHP, содержащая 0001, и я добавляю 1 к ней, результат равен 2 вместо 0002.

Как решить эту проблему?

Ответ 1

$foo = sprintf('%04d', $foo + 1);

Ответ 2

Вероятно, это поможет вам понять типы данных PHP и их влияние, когда вы выполняете операции с переменными различных типов. Вы говорите, что у вас "переменная в PHP говорит 0001", но какой тип этой переменной? Вероятно, строка "0001", поскольку целое число не может иметь это значение (это всего лишь 1). Поэтому, когда вы это сделаете:

echo ("0001" + 1);

... оператор + говорит: "Hm, что строка и целое число.Я не знаю, как добавить строку и int.Но я знаю, как преобразовать строку INTO в int, а затем добавьте два int вместе, так что позвольте мне сделать это", а затем он преобразует "0001" в 1. Почему? Поскольку правила PHP для преобразования строки в целое число говорят, что любое количество ведущих нулей в строке отбрасывается. Это означает, что строка "0001" становится равной 1.

Затем + говорит: "Эй, я знаю, как добавить 1 и 1. Это 2!" и вывод этого оператора равен 2.

Ответ 3

Другим вариантом является str_pad().

$text = str_pad($text, 4, '0', STR_PAD_LEFT);

Ответ 4

<?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
?>