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); ?>
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; ?>
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; ?>
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); ?>
Original Number : 86857658 <br>Modified Number : 000000000086857658