Hola a tod@s,

Hoy continuamos con nuestro curso que dejamos la semana pasada con su tercera entrega, Desarrollo Web con PHP y MySQL (III), donde estuvimos viendo los formularios HTML, sus etiquetas (TAGS) y sus atributos así también como los métodos GET y POST en los formularios para enviar datos a una página para procesarlos, en nuestro caso, una página PHP.

En el último ejemplo que vimos, era un documento para enviar datos (HTML) y otro que los procesaba (PHP).

Aquí os dejo una versión más compleja del ejemplo con más elementos en el formulario HTML, así de paso se repasa lo anterior.

Hoy continuaremos con la utilización de números en PHP.

Como en cualquier lenguaje de programación, se ha de tener especial cuidado en el tratamiento o utilización de números dentro del código fuente de nuestro proyecto, ya que equivocarse en un formato, poner un punto por una coma o algún otro pequeño despiste, nos podría ocasionar un verdadero dolor de cabeza tanto en la ejecución de nuestro código como en la depuración (corrección de errores de un código fuente paso a paso mediante programas específicos llamados depuradores o Debuggers).

Por este motivo, vamos a ver como se utilizan los números en nuestro lenguaje, el PHP.

Continuando con la numeración de los capítulos, seguimos con el capítulo 6.

6. Utilización de números en PHP

6.1 Tipos de números

En PHP (como en muchos otros lenguajes), se puede hacer una división de los dos grandes grupos de números:

  • Los números enteros (3, -4, 25, 0)
  • Los números reales (con decimales) (3.14, 5.546, -6.1)

Para el uso de números reales, debemos tener cuidado con el separador de decimales, ya que en PHP es un punto (.) y NO una coma (,).

Para operar con ellos, es decir, para hacer sumas, restas, multiplicaciones, etc. Usaremos los Operadores.

6.2 Operadores

Hay 3 tipos de operadores en PHP:

  • Operadores aritméticos
  • Operadores de comparación
  • Operadores lógicos

Ahora pasaremos a ver qué operadores existen para cada tipo.

Operadores aritméticos:

  • Suma: + (Adición)

  •  Resta(Sustracción)

  • Multiplicación: * (Asterísco)

  • División: /

  • Resto (Módulo): % (resto de una división)

Operadores de comparación:

  • Igual: == (2 símbolos de igual seguidos, comprueba si dos números son iguales. Solo 1 símbolo de = asigna un valor).

  • Distinto: != (Comprueba si dos números son distintos)

También se puede utilizar el símbolo <> en vez de != para utilizar este operador de comparación.

  • Menor que: < (Comprueba si un número es menor que otro)

  •  Mayor que: > (Comprueba si un número es mayor que otro)

  • Menor o igual que: <= (Comprueba si un número es menor o igual a otro)

  • Mayor o igual que: >= (Comprueba si un número es mayor o igual a otro)

Operadores lógicos:

  • Y (AND): && o AND (Sirve para concatenar condiciones. “Cuando se cumpla esto Y esto, será cierto”)

Para que el resultado de un && sea True, TODAS las condiciones han de ser verdaderas o True.

El signo de && se escribe pulsando dos veces la tecla Alt Gr + la tecla del nº 6 del teclado tanto en Windows como en Linux y Alt + 6 en MacOS.

  • O (OR): || o OR (Sirve para concatenar condiciones. “Cuando se cumpla esto O esto, será cierto”)

Para que el resultado de un OR sea True, al menos una de las condiciones ha de ser verdadera o True.

El signo de || se escribe pulsando dos veces la tecla Alt Gr + la tecla del nº 1 del teclado tanto en Windows como en Linux y Alt + 1 en MacOS.

  • ! (NOT): ! o NOT (Sirve para negar una condición. “Cuando NO se cumpla esta condición, será cierto”).

 6.3 Precedencia en las operaciones

Si nos diesen esta operación a calcular:

¿Como procedemos?, ¿Que realizamos primero?, ¿Sumas, Restas, Multiplicaciones?

Para este fin PHP tiene establecido un orden de precedencia en las operaciones.

La precedencia de un operador indica qué tan “estrechamente” se unen dos expresiones juntas. Por ejemplo, en la expresión 1 + 5 * 3 , la respuesta es 16 y no 18 porque el operador de multiplicación (“*“) tiene una precedencia mayor que el operador de adición (“+“). Los paréntesis pueden ser usados para forzar la precedencia, si es necesario. Por ejemplo: (1 + 5) * 3 se evalúa como 18.

El orden de precedencia de PHP es:

  1. Operadores unitarios (Sumas o restas: + o -)
  2. Operadores Multiplicativos evaluados de izquierda a derecha (Multiplicaciones: *)
  3. Operadores aditivos evaluados de izquierda a derecha (Incremento o decremento: ++ o –). ¡Ahora los veremos!
  4. Operadores relacionales (>,<,>=,<=)
  5. Operadores de asignación (=)

Para extender la información, os dejo una tabla extraída de la web PHP.NET con la precedencia de operadores (algunos operadores que se muestran no trabajaremos con ellos, pero si os interesa, podéis ir a la web para buscar información sobre ellos y para que se emplean).

Los operadores situados más arriba de la tabla son los que tienen más preferencia, y los que están al mismo nivel, misma línea, tienen la misma preferencia. Cuando los operadores tienen la misma precedencia, su asociatividad decide si se evalúan a partir de la derecha o desde la izquierda. Asociatividad izquierda significa que la evaluación procede de la izquierda a la derecha y asociatividad derecha significa lo opuesto.

Precedencia de operadores

Asociatividad Operadores Información adicional
no asociativo clone new clone and new
izquierda [ array()
derecha ++ — ~ (int) (float) (string) (array) (object) (bool) @ tipos e incremento/decremento
no asociativo instanceof tipos
derecha ! lógico
izquierda * / % aritmética
izquierda + – . aritmética y string
izquierda << >> bit a bit
no asociativo < <= > >= comparación
no asociativo == != === !== <> comparación
izquierda & bit a bit y referencias
izquierda ^ bit a bit
izquierda | bit a bit
izquierda && lógico
izquierda || lógico
izquierda ? : ternario
derecha = += -= *= /= .= %= &= |= ^= <<= >>= => asignación
izquierda and lógico
izquierda xor lógico
izquierda or lógico
izquierda , muchos usos

Entonces el problema anterior vemos que:

 6.4 Incrementar o decrementar un número

En este momento, si pensamos en incrementar o disminuir (decrementar) en una unidad un número, pensaríamos en estas operaciones:

Pero PHP ya tiene una operación que hace esta función y no hace falta que tengamos que añadir o quitar unidades “a mano”, sino que escribiendo los operadores ++ y detrás del nombre de la variable que contiene el número, Incrementamos o Decrementamos en una unidad el valor de esa variable.

La posición de los operadores ++ o — en la variable es importante, ya que no es lo mismo colocar estos operadores al final del nombre de la variable, que al principio. En esta tabla se resume su efecto:

Ejemplo Nombre Efecto
++$a Pre-incremento Incrementa $a en uno, y luego retorna $a.
$a++ Post-incremento Retorna $a, y luego incrementa $a en uno.
–$a Pre-decremento Decrementa $a en uno, luego retorna $a.
$a– Post-decremento Retorna $a, luego decrementa $a en uno.

6.5 Dar formato a un número

Cuando trabajamos con números, es muy frecuente dar un formato específico ya sea por estética o por otros motivos. Por ejemplo si deseamos representar el valor de PI, no hace falta que nos muestre por ejemplo 20 o más decimales sino que basta con el 3.14.

De facto, desde la escuela, nos han enseñado a redondear números con una sencilla regla:

  • Si el número decimal es igual a 5 o superior, se redondea por arriba aumentando en 1 unidad el número y quitando el decimal.
  • Si el decimal es inferior a 5, el número se queda con su misma unidad y quitamos los decimales.

Por ejemplo tenemos los números 4.29 y 2.5 y queremos redondear, diremos que el 4.29 es 4, y el 2.5 es 3. ¿Correcto?

PHP tiene 2 funciones para poder realizar estos redondeos, e incluso le podemos especificar el número de decimales que deseamos representar.

Las funciones son:

round()

Tiene la función de redondear un número. Puede tener 2 argumentos:

  • 1º argumento: Número a redondear
  • 2º argumento: número de posiciones decimales que queremos redondear el número.

Ejemplo:

number_format()

Esta función es igual que round() pero además añade comas “,” en la posición de miles.

 6.6 Crear números aleatorios

Dentro de un programa, a veces nos interesa generar un nombre aleatorio dentro de un margen, por ejemplo:

  • Queremos obtener un numero aleatorio que este entre 1 y 100

Para esta función, PHP tiene una función llamada rand().

Se puede utilizar de 2 formas diferentes:

  • rand() se puede utilizar solo sin ningún parámetro, lo cual nos retorna un número aleatorio entre 0 y getrandmax().

getrandmax() es una función de PHP que nos muestra cual es el valor máximo que puede representar rand() sin parámetros.

  • Pero también se pueden especificar (asignando parámetros  a rand() ) entre que valores deseamos generar el número aleatorio.

Por ejemplo, rand(100,250). Nos generará un número aleatorio entre 100 (mínimo) y 250 (máximo), por ejemplo un resultado podría ser el 157.

Si deseamos obtener un número aleatorio con rand() pero que nos devuelva un número con decimales, deberemos dividir el número generado.

Por ejemplo, si efectuamos rand(2,10)/10, nos podría devolver un valor del tipo 15.7.

Ahora, después de haber visto como PHP trabaja con números, pasaremos a escribir un ejemplo real para comprender mejor de como se trabaja.

Vamos a realizar un pequeño programa en PHP que nos calcule las mensualidades de una compra realizada a plazos, es decir una     calculadora de compras a plazos On-Line.

Realizaremos una página HTML llamada envia-plazos.html y una página PHP (que procesará los datos) llamada procesa-plazos.php

envia-plazos.html

procesa-plazos.php

Hasta aquí esta parte del curso Desarrollo Web con PHP y MySQL. La semana próxima nos adentramos en el trabajo con cadenas de texto en la programación PHP (caracteres de fin de línea y métodos) y problemas con las etiquetas HTML dentro de un formulario HTML.

Os dejo en este archivo .ZIP todos los ejemplos de esta entrada por si no os funciona alguno.

Hasta entonces un saludo a tod@s y no os olvidéis dejar vuestros comentarios.

Info | PHP.NET

Curso | Desarrollo Web con PHP y MySQL