Como formatar corretamente um número com os principais zeros em PHP
- Utilize uma string para substituir o número
-
substr()
para Adicionar Zeros Líderes em PHP -
printf()
/sprintf()
para adicionar zeros principais em PHP -
str_pad()
para Adicionar Zeros Líderes em PHP
Em PHP, números ou números inteiros com zeros à esquerda podem ter valores diferentes com resultados inesperados.
Exemplo:
$number = 0987654321; //this is an octal number
$number = 0x987654321 // this is a hexadecimal number
$number = 0b0987654321 // this is a binary number
Para garantir que o número não perca seu significado natural
, há várias maneiras de tentar como utilizar uma string ao invés de um número ou utilizando diferentes funções como substr
, printf()
/ sprintf()
e str_pad
.
Utilize uma string para substituir o número
A abordagem mais fácil; simplesmente usar cordel como um substituto para o número.
$number = "0987654321";
Quando usar:
- Não é necessário o comprimento da saída.
- Não há exceção para o número que sempre precisa de um zero inicial.
substr()
para Adicionar Zeros Líderes em PHP
Este método prende os números da esquerda quando o comprimento da string excedeu.
Se o start
for negativo, a string retornada começará a partir do caracter start
do final do string
.
Exemplo:
$number = 98765;
$length = 10;
$string = substr(str_repeat(0, $length).$number, - $length);
//output: 0000098765
Quando utilizar:
- Quando há um comprimento fixo da string de saída.
- Adicionar zeros quando a string é menor que o comprimento.
printf()
/sprintf()
para adicionar zeros principais em PHP
Para estofar uma saída para um comprimento fixo, quando a entrada é menor que o comprimento, e retornar a string quando a entrada é maior.
Exemplo:
$length = 10;
$char = 0;
$type = 'd';
$format = "%{$char}{$length}{$type}"; // or "$010d";
//print and echo
printf($format, 987654321);
//store to a variable
$newFormat = sprintf($format, 987654321);
// output: 0987654321
No exemplo, o comprimento fixo é ajustado para 10 e o comprimento de entrada é 9, então adiciona um zero
à esquerda se utilizar printf()
/sprintf
.
sprintf()
Valores dos parâmetros
Parameter | Descrição |
---|---|
format (Obrigatório) |
A string e como formatar as variáveis. Possíveis valores de formato: %% - Sinal percentual%b - Binário%c - Caracteres referidos a ASCII%d - Número decimal (negativo ou positivo)%e - Notação científica em minúsculas%E - Notação científica em maiúsculas%u - Número decimal sem sinal%f - Número de flutuação (não sabe a configuração local)%F - Número de flutuação (não sabe a configuração local)%g - versão mais curta de %e e %f %G - versão mais curta de %E e %F %o - Octal%s - String%x - Hexadecimal (minúsculas)%X - Hexadecimal (maiúsculas) |
arg1 (Obrigatório) |
A ser inserido no primeiro sinal de %. |
arg2 (Opcional) |
A ser inserido no segundo sinal de %. |
argg++ (Opcional) |
A ser inserido no terceiro, quarto, etc. %-sinal |
Nota:
- Se o comprimento da string de entrada for maior ou igual ao comprimento da almofada, somente retornará a string - nenhum caracter será omitido.
- A almofada só é adicionada se o comprimento da entrada for menor do que o comprimento da almofada.
str_pad()
para Adicionar Zeros Líderes em PHP
Este método irá preencher um cordel com um novo comprimento de caracteres especificados.
Exemplo:
$length = 7;
$string = "12345";
echo str_pad($string,$length,"0", STR_PAD_LEFT);
//output: 0012345
O exemplo acima adicionará o zero
à string especificada até que ela corresponda ao comprimento especificado (que é 7
neste caso).
str_pad()
Lista de Parâmetros*.
Parâmetro | Descrição |
---|---|
string |
O string a almofada |
length |
Especifica o novo comprimento da string. **Nota: **Se o valor for menor do que o comprimento da string, nada acontecerá. |
pad_string |
Especifica o string a ser usado para estofamento. O valor padrão é o espaço em branco. |
pad_type |
Especifica onde almofadar a string. Valores aceitos: STR_PAD_BOTH - Isto irá almofadar ambos os lados da string.STR_PAD_LEFT - Almofada do lado esquerdo da stringSTR_PAD_RIGHT - Almofada do lado direito da string |