Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite!
Eu estou com um problema ao utilizar o Pré-incremento do PHP. Quando eu vou incrementar um número que tem zeros a esquerda, ele me retorna o novo número sem os zeros. Exemplo o número "0001", ao realizar o pré-incremento ele me retorna "2" ao invés de "0002". É muito importante eu manter o número de zeros a esquerda pois eles fazem parte de um código. Exemplo de código que estou usando.
$numeroUsuario = ++$cdUsuario;//Incrementa +1 no valor do último código cadastrado
$tipoUsuario = 'ad';
$cdUsuario = $tipoUsuario.''.$numeroUsuario;//Concatena o tipo do usuário com a parte númerica do código
echo $cdUsuario;
Grato desde já.
Mas não tem como eu prever quantos zeros a esquerda podem aparecer. Pode ser um número tipo "0005" ou "0234".
transforme em string.
Mas se eu converter para string como vou incrementar +1 ?
$numero = 1;
++$numero;
printf( '%04s', $numero );//alternativa 1
echo '<br>';//separar os resultados
echo str_pad( $numero, 4, '0', STR_PAD_LEFT );//alternativa 2
Resultado:
0002
0002
Mas dessa forma eu vou apenas estar adicionando os zeros a esquerda do número. Como já foi dito, eu não sei quantos zeros o número que virá do banco de dados irá ter.
Você quer acrescentar exatamente o mesmo número de zeros que ele possuia antes?
Exemplo: o número era 0099, você quer que fique 00100?
Não, eu quero que ele possua a mesma quantidade de caracteres.
Exemplo: o número era 0099, eu quero que ele vire 0100.
Amigo, por acaso você testou o que te mandei?
Ele faz exatamente o que você quer.
<?php
$numero_qualquer = '000242';//Você terá que forçar o tipo string, pois se vier int o strlen também não vai contar os zeros
$tamanho = strlen($numero_qualquer);
$tamanho_somado = $numero_qualquer+1;
$novo_numero = str_pad( $tamanho_somado, $tamanho, '0', STR_PAD_LEFT );
echo $novo_numero;
?>
Utilize str_pad para adicionar os zeros, pois o esperado de fato é o que ocorre (sumir os zeros).