Как в PHP добавить числовую строку с заполненным нулями и сохранить заполнение нулями?

StackOverflow https://stackoverflow.com/questions/718229

Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

echo ("0001" + 1);

... + Оператор говорит: «Хм, это строка и целое число.Я не знаю, как добавить строку и целое число.Но я ДЕЙСТВИТЕЛЬНО знаю, как преобразовать строку В целое число, а затем сложить два целых числа вместе, так что позвольте мне сделать это», а затем оно преобразует «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
?>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top