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

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

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

4 ответа

Решение
$foo = sprintf('%04d', $foo + 1);

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

echo ("0001" + 1);

... + оператор говорит: "Хм, это строка и целое число. Я не знаю, как добавить строку и целое число. Но я действительно знаю, как преобразовать строку в INT в целое, а затем добавить два целых числа вместе, поэтому позвольте мне сделать это ", а затем он преобразует" 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
?>
Другие вопросы по тегам