Si tengo una variable en PHP que contiene 0001
y le agrego 1, el resultado es 2 en lugar de 0002
.En PHP, ¿cómo puedo agregar a una cadena numérica sin relleno y conservar el relleno cero?
¿Cómo resuelvo este problema?
Si tengo una variable en PHP que contiene 0001
y le agrego 1, el resultado es 2 en lugar de 0002
.En PHP, ¿cómo puedo agregar a una cadena numérica sin relleno y conservar el relleno cero?
¿Cómo resuelvo este problema?
$foo = sprintf('%04d', $foo + 1);
Otra opción es la función str_pad().
$text = str_pad($text, 4, '0', STR_PAD_LEFT);
Sería probablemente ayudará a comprender los tipos de datos PHP y cómo se ven afectados cuando haces las operaciones a las variables de varios tipos. Usted dice que tiene "una variable en PHP digamos 0001", pero ¿de qué tipo es esa variable? Probablemente una cadena, "0001", ya que un entero no puede tener ese valor (es solo 1). Así que cuando usted hace esto:
echo ("0001" + 1);
... el operador +
dice, "Hm, que es una cadena y un entero no sé cómo agregar una cadena y un entero, pero sí sé cómo.. para convertir una cadena INTO en int, y luego agregar dos ints juntos, así que déjame hacer eso, "y luego convierte" 0001 "en 1. ¿Por qué? Debido a que las reglas de PHP para convertir una cadena en un entero dicen que se descarta cualquier número de ceros a la izquierda en la cadena. Lo que significa que la cadena "0001" se convierte en 1.
Luego, el +
dice: "Oye, sé cómo agregar 1 y 1. ¡Son 2!" y la salida de esa declaración es 2.
No resolvió el problema, pero se explicó muy bien. :) – DanMan
<?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
?>
Gracias, funcionó a la perfección. – Ryan