with str_pad round number left izquierda decimals ceros php string numbers zero

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



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