par
Saian » 23 mai 2019, 16:09
Salut, je dirais qu'il faut que tu traites le préfixe comme une chaine et non comme un entier.
Mais tu peux aussi regarder du côté de la fonction str_pad.
https://php.net/manual/fr/function.str-pad.php
Un petit test :
$prefix = '0125';
$length = 12;
$pad = $length - strlen($prefix);
$loop = str_repeat(9, $pad);
echo "pad = $pad, loop = $loop\n";
$i = -1;
while (++$i <= $loop) {
$num = $prefix.str_pad($i, $pad, 0, STR_PAD_LEFT);
echo $num.' ('.strlen($num).')'."\n";
if ($i > 10) break ;
}
Output :
pad = 8, loop = 99999999
012500000000 (12)
012500000001 (12)
012500000002 (12)
012500000003 (12)
012500000004 (12)
012500000005 (12)
012500000006 (12)
012500000007 (12)
012500000008 (12)
012500000009 (12)
012500000010 (12)
012500000011 (12)
Salut, je dirais qu'il faut que tu traites le préfixe comme une chaine et non comme un entier.
Mais tu peux aussi regarder du côté de la fonction str_pad.
https://php.net/manual/fr/function.str-pad.php
Un petit test :
[PHP]$prefix = '0125';
$length = 12;
$pad = $length - strlen($prefix);
$loop = str_repeat(9, $pad);
echo "pad = $pad, loop = $loop\n";
$i = -1;
while (++$i <= $loop) {
$num = $prefix.str_pad($i, $pad, 0, STR_PAD_LEFT);
echo $num.' ('.strlen($num).')'."\n";
if ($i > 10) break ;
}[/PHP]
Output :
[PHP]pad = 8, loop = 99999999
012500000000 (12)
012500000001 (12)
012500000002 (12)
012500000003 (12)
012500000004 (12)
012500000005 (12)
012500000006 (12)
012500000007 (12)
012500000008 (12)
012500000009 (12)
012500000010 (12)
012500000011 (12)[/PHP]