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