str_pad - php zerofill left
PHP anteponer el cero inicial antes del número de un solo dígito, sobre la marcha (4)
PHP: ¿existe un método rápido y en tiempo real para probar una cadena de caracteres individuales y luego anteponer un cero inicial?
Ejemplo:
$year = 11;
$month = 4;
$stamp = $year.add_single_zero_if_needed($month); // Imaginary function
echo $stamp; // 1104
La herramienta universal para el formateo de cadenas, sprintf
:
$stamp = sprintf(''%s%02s'', $year, $month);
Parece que toman muchas líneas para que funcione. Utilizo esta breve funcionalidad IF y da el mismo resultado que OP quiere.
$month = 8;
echo ($month < 10 ? ''0''.$month : $month); // output: 08
Y solo se necesita 1 línea para mostrar la salida correcta
Puedes usar str_pad
para agregar 0''s
str_pad($month, 2, ''0'', STR_PAD_LEFT);
string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )
Puedes usar sprintf: http://php.net/manual/en/function.sprintf.php
<?php
$num = 4;
$num_padded = sprintf("%02d", $num);
echo $num_padded; // returns 04
?>
Solo agregará el cero si es menor que el número requerido de caracteres.
Editar: Como lo señala @FelipeAls:
Al trabajar con números, debe usar %d
(en lugar de %s
), especialmente cuando existe la posibilidad de números negativos. Si solo usa números positivos, cualquier opción funciona bien.
Por ejemplo:
sprintf("%04s", 10);
devuelve 0010
sprintf("%04s", -10);
devuelve 0-10
Donde como:
sprintf("%04d", 10);
devuelve 0010
sprintf("%04d", -10);
devuelve -010