¿Cómo formatear correctamente un número con ceros a la izquierda en PHP?

Un número es esencialmente una secuencia de dígitos apilados para formar un número entero o una string. Un número puede comenzar con ceros a la izquierda. También se puede recorrer un número y se pueden hacer modificaciones para agregar o concatenar otra secuencia de caracteres en él.

Enfoque 1: usar un bucle for para la concatenación de strings

Se puede iterar un bucle for donde no. de iteraciones es equivalente a la cantidad de ceros para comenzar el número. Durante cada iteración, se agrega un cero al frente de la string. La complejidad del tiempo es lineal en términos del número de ceros y se supone que es constante para todos los propósitos prácticos. 

PHP

<?php
    #declaring the number of zeros to lead the number
    $no_of_zeros = 4;
    #declaring the number
    $number = 999;
    print ("Original number : ");
    print ($number."\n"."<br>");
    #leading the number with indicated zeros
    for($i=1;$i<=$no_of_zeros;$i++)
    {
      #concatenating 0 string in front of number
      $number = '0'.$number;
    }
    print ("Modified number : ");
    print ($number);
?>
Producción

Original number : 999
Modified number : 0000999

Enfoque 2: Conversión de entero a string

Una variable de string se puede utilizar como sustituto para almacenar números. No es necesario especificar explícitamente la longitud del número. PHP coacciona automáticamente el tipo del número almacenado. Además, se puede realizar un cambio explícito de los tipos de datos convirtiendo el tipo en el formato requerido. 

Sin embargo, los tipos de datos numéricos tienen la limitación de almacenar los números sin ceros a la izquierda, por lo tanto, todos los ceros se eliminan tan pronto como se realiza la conversión. El siguiente fragmento de código ilustra este procedimiento.

PHP

<?php
  #declaring a number using a string with leading zeros
  $num = "00000092939292";
 
  #printing the number
  echo "Original Number \n";
  echo $num."\n"."<br>";
  echo "explicit casting.\n";
 
  #explicit casting
  echo (int)$num;
?>
Producción

Original Number 
00000092939292
explicit casting.
92939292

Enfoque 3: Usar el método  str_pad()

Este método rellenará una string con una nueva longitud de los caracteres especificados. En este caso, el número se declara mediante una variable de string. Si la longitud especificada es menor o igual que la longitud original de la string, no se realizan modificaciones en la string original. El método str_pad() es otra alternativa para realizar una concatenación de strings repetida. 

En este enfoque, usaremos el relleno izquierdo para rellenar la cuerda desde el lado izquierdo. pad_type será STR_PAD_LEFT y pad_string será equivalente a “0”. La longitud es equivalente a la longitud de la string original sumada a la cantidad de ceros con los que queremos comenzar el número. 

PHP

<?php
#specify the new length of the string
$len = 8;
 
#declare number using a string
$str = "2222";
echo("Original String \t");
echo ($str."\n");
 
#compute new string
$new_str = str_pad($str,$len,"0", STR_PAD_LEFT);
echo("Modified String \t");
echo $new_str;
?>
Producción

Original String     2222
Modified String     00002222

Enfoque 4: Uso de especificadores de formato printf()/sprintf()

Las funciones printf() y sprintf() dan como resultado una string formateada. Se especifica un formato para generar el número en función del carácter inicial y la longitud total de la string. Es necesario indicar el tipo de número, es decir, si es decimal, hexadecimal, octal, etc. Se utiliza para modificar el número de tal manera que refleje el patrón adecuado del número. Al menos uno de los argumentos es obligatorio al llamar a esta función. 

Sintaxis:

printf(format,arg1,arg2)

Parámetros:

  • formato (Requerido): La string que da formato a las variables.
  • arg1: un valor que se insertará en el primer signo %
  • arg2 (opcional): un valor que se insertará en el segundo signo de %

PHP

<?php
  #declaring the number
  $num = 86857658;
  print("Original Number : ");
  print($num."\n"."<br>");
 
  #specifying the number of zeros
  $num_of_zeros = 10;
 
  #defining the total length of the number of
  #zeros and length of the number
  $length = $num_of_zeros + strlen($num) ;
 
  #defining the character to lead the number with
  $ch = 0;
 
  #specifying the type of number
  $num_type = 'd';
 
  #specifying the format
  $format_specifier = "%{$ch}{$length}{$num_type}";
 
  # print and echo
  print("Modified Number : ");
  printf($format_specifier, $num);
 
?>
Producción

Original Number : 86857658
<br>Modified Number : 000000000086857658

Publicación traducida automáticamente

Artículo escrito por yippeee25 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *