В PHP, как мне добавить числовую строку с нулем и сохранить нулевую? - PullRequest
11 голосов
/ 05 апреля 2009

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

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

Ответы [ 4 ]

21 голосов
/ 05 апреля 2009
$foo = sprintf('%04d', $foo + 1);
12 голосов
/ 05 апреля 2009

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

echo ("0001" + 1);

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

Тогда + говорит: «Эй, я знаю, как добавить 1 и 1. Это 2!» и результат этого утверждения составляет 2.

9 голосов
/ 05 апреля 2009

Другой вариант - функция str_pad () .

$text = str_pad($text, 4, '0', STR_PAD_LEFT);
3 голосов
/ 16 апреля 2011
<?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
?>
...