jueves, 22 de enero de 2009

Manual de PHP 21. Formatos: Datos numéricos

Funciones de salida

Ya conocemos algunas de las funciones que PHP utiliza para mostrar información –salidas– en la ventana del navegador del cliente.

Recordémoslas:

echo

La función echo, aunque admite también la forma echo(), no requiere de forma obligatoria el uso de los paréntesis.

Detrás de la instrucción echo pueden insertarse: variables, cadenas (éstas entre comillas) y números (éstos sin comillas) separadas por comas.

Este es un ejemplo de código:

$a=24; $b="Pepe";
$c="
";

echo $a,$b,25,
"Luis",$c;

que produciría esta salida:

24Pepe25Luis

Observa los valores que hay detrás de echo. Como verás, no es necesario insertar todos los valores en la misma línea.

print()

La función print() sólo puede contener dentro del paréntesis una sola variable, o el conjunto de varias de ellas enlazadas por un punto.

Aquí tienes algunos ejemplos:

print(25.3)
produciría esta salida
25.3

print("Gonzalo")
escribiría
Gonzalo

$z=3.1416;
print($z);
escribiría
3.1416

Recuerda también que es posible utilizar dentro del paréntesis el concatenador de cadenas.

$h=3;
$f=" hermanos"
print("Heladeria ".$h.$f)

que escribiría

Heladeria 3 hermanos

Salidas con formato

Ni la función echo, ni tampoco print permiten establecer una presentación (formato) en sus salidas, excepto que alguna de las variables que se use contenga el resultado de una función number_format.

La función printf() ofrece un gran número de posibilidades en este sentido. Tanto la sintaxis como los valores de los diferentes parámetros –cuando se trate de presentar números– las tienes resumidas aquí a la derecha.

En la tabla siguiente veremos el uso de printf() para el tratamiento de variables tipo cadena.

Aquí tienes un resumen de las diversas opciones de la función printf()






Sintaxis
printf(cadena de formato,variable1,variable2,..)
Cadena de formato
"%[relleno][alineación][ancho][precisión][tipo]"
RellenoCarácterValorSintaxisResultado
00printf("%020d",32)
*'*printf("%'*20d",32)
espacio1)' printf("%' 20d",32)
-'- printf("%'-20d",32)
ObservacionesEn este apartado prestaremos atención únicamente a los caracteres marcados en rojo, que son los que corresponden a las diferentes formas de relleno. Los demás parámetros los iremos tratando uno en los apartados siguientes.Cuando se pretende rellenar con ceros –a la izquierda– basta escribir el 0 inmediatamente detrás del signo %Si se trata de rellenar con un carácter distinto de cero debe escribirse inmediatamente después de% una comilla simple ' seguida del carácter de relleno.Si se pretende rellenar con espacios forzados se puede escribir la comilla simple 'e inmediatamente después teclear la combinación ALT+0160 (carácter ASCII 160) usando el teclado numérico. Aunque obviamente no se visualiza el espacio si se conserva tal como puede verse en el ejemplo 1)Obsérvese que como la tipografía es de ancho variable y que según el carácter que se use como relleno se modifica el ancho de la presentación.Quizá convenga recordar que 32 es en este caso la variable a la que pretendemos dar formato y que ese valor podría ser sustituido por el nombre de una variable que contenga valores numéricos.
AlineaciónCarácterValorSintaxisResultado
NingunoDchaprintf("%020d",32)
-Izdaprintf("%020d",32)
NingunoDchaprintf("%'*20d",32)
-Izdaprintf("%'*20d",32)
NingunoDchaprintf("%020s",32)
-Izdaprintf("%020s",32)
NingunoDchaprintf("%'*20s",32)
-Izdaprintf("%'*20s",32)
ObservacionesEn los casos en que figura Ninguno en la columna Caracter tratamos de indicar que no es necesario escribir nada en la cadena de formato. Cuando aparece un signo (–) estamos indicando que debe insertarse un signo menos.Fíjate que en los cuatro primeros supuestos el identificador de tipo es d, lo cual hace que considere la variable como numérica, mientras que en los cuatro últimos ese valor es s, con lo cual considera la variable como tipo cadena.Cuando tratamos de rellenar una variable numérica con ceros por la derecha PHP los omite para no alterar el valor numérico en la presentación. Con cualquier otro carácter de relleno (incluidos los caracteres numéricos con ' delante) sí efectúa el relleno.
AnchoCarácterValorSintaxisResultado
Entero14printf("%'*14d",32)
Entero17printf("%'*-17d",32)
Decimal14.5printf("%'*14.5d",32)
Decimal17.8printf("%'*-17.8d",32)
Decimal14.5printf("%'*14.5f",32)
Decimal11.8printf("%'*-11.8f",32)
ObservacionesEl ancho (nº de caracteres totales) puede especificarse mediante un número entero para todo tipo de variables. Si se expresa mediante un número decimal y la variable es tipo coma flotante la parte decimal indica la precisión (nº de cifras decimales) y la parte entera el ancho como número de caracteres de la parte entera o de la parte decimal, según se rellene a la derecha o a la izquierda.
TipoTipoValorSintaxisResultado
Presentación
en forma binaria
bprintf("%'*14b",17)
Caracter
correspondiente al código ASCII
cprintf("%'*14c",97)
Número presentado como enterodprintf("%'*14d",17.83)
Número presentado con decimalesfprintf("%'*14f",17.45)
Presentación en forma octaloprintf("%'*14o",17)
Presentación en hexadecimal xprintf("%'*14x",170)
Presentación en hexadecimalXprintf("%'*14X",170)
Presentación como >cadenasprintf("%'*14s",170)



Fuente:
Página del ifstic: http://www.isftic.mepsyd.es/formacion/enred/

No hay comentarios: