Contexto


Seguramente recuerdas algunas clases de química y de matemáticas en las que combinabas algunas sustancias que daban por resultado una nueva completamente diferente. Bueno, así son las expresiones, puedes verlas como los elementos de una fórmula que al final te darán un nuevo elemento o valor.

Las expresiones regulares no son más que una secuencia o patrón de caracteres. Ellas proporcionan la base para la funcionalidad de patrones en PHP.

Esto y más verás en el presente tema.

Explicación


3.1 Expresiones

A lo largo del curso has aprendido conceptos y términos  de PHP, sin embargo esa información por sí misma no es de mucha utilidad, para exprimir su verdadero potencial debes unir cada pieza para crear expresiones. Una expresión es la combinación de valores, variables, funciones y operadores que como resultado arroja un nuevo valor. Otra forma de definirla sería señalar que es "cualquier cosa que tenga un valor".

Las formas más básicas de expresiones son las constantes y las variables. Cuando se escribe "$a = 5", se está asignando '5' a la variable $a. Entonces '5', obviamente, tiene el valor 5, o en otras palabras, '5' es una expresión con el valor de 5, en este caso es una constante entera.

Sin saberlo en temas anteriores ya empezaste a usarlas y si alguna vez cursaste álgebra, tendrás noción de que las expresiones podrían traducirse al lenguaje de PHP.





y = 2(3x + 4)






$y = 2 * (3 * $x + 4);

Un ejemplo de una expresión compleja es una función, algo como:

<?php
function test() {
   $x = 2;
   $y = 2 * (3 * $x + 4);
   echo $y;
}
test(); // cual es el resultado?
?>

En cualquier caso, una expresión puede dar como resultado un número, un valor string o un valor booleano. Hasta ahora ya conoces algunos tipos de números y los strings, por lo que es conveniente abordar los valores booleanos. Los valores que dan por resultado verdadero (true) o falso (false) son llamados booleanos (booleans). Una expresión como 1>0 daría como resultado TRUE y una expresión 1 == 0 devuelve un resultado FALSE.

En PHP el valor TRUE=1 y el valor FALSE=NULL, es decir, a nada. Este último punto difiere de otros lenguajes donde FALSE equivale a cero. Escribe estas expresiones y ejecútalas para que experimentes:

<?php
  echo "a: [" . (20 > 9) . "]<br>"; // recuerdas la concatenacion con punto?
  echo "b: [" . (5 == 6) . "]<br>"; // el tag 
es solo para dar un break echo "c: [" . (1 == 0) . "]<br>"; echo "d: [" . (1 == 1) . "]<br>"; ?>

En la salida de la información puedes confirmar que las expresiones que fueron verdaderas dan una salida de 1, mientras que las falsas no dan valor (vacío), representando null. Escribe y ejecuta este nuevo ejemplo:

<?php // test2.php
  echo "a: [" . TRUE . "]<br>";
  echo "b: [" . FALSE . "]<br>";
?>

En este ejemplo puedes ver que las constantes TRUE y FALSE están siendo invocadas. El resultado es el mismo. Verdadero (TRUE) da un valor de 1 mientras que falso da NULL (nada).

En el siguiente ejemplo puedes ver algunas expresiones y sus respectivos valores. Escribe y ejecuta lo siguiente:

<?php 
 $myMascota = "Gatos";
  $cuantosTengo = 5;   
  echo "a: " . 73 . "<br>"; // Literal numerica
  echo "b: " . "Hello" . "<br>"; // Literal String
  echo "c: " . FALSE . "<br>"; // Literal Constante
  echo "Mi tipo de mascota son los: " . $myMascota .
  " y tengo :" . $cuantosTengo;
  // Variable numerica y variable String
?>

Puedes notar que en la última expresión existe un salto de renglón en el texto, a PHP no le importa el espacio blanco, a menos que tú lo especifiques. Recuerda que el espacio blanco o la indentación, son solamente para que nuestros ojos puedan leer con mayor facilidad el código.

Ya estamos casi listos para escribir código realmente funcional.
¡Sigamos avanzando!

3.2 Condicionales

Los condicionales son las herramientas que permitirán comparar, ejecutar y evaluar expresiones, pueden cambiar el flujo de un programa y presentar información de acuerdo a las respuestas recibidas por parte del usuario o del cliente. A continuación conocerás los condicionales más útiles.

Para definir el condicional if/else y elseif primero debes comprender que en algún punto en tu programación requerirás que alguna acción se dispare de acuerdo al valor de cierta variable o a la respuesta del usuario. Un ejemplo básico es el uso de una contraseña, donde dependiendo de la entrada de la información, ya sea que ésta sea correcta o incorrecta, una acción es ejecutada.

Observa el diagrama de este ejemplo:

Muy bien, ahora veamos cómo funciona esta magia.

La sintaxis básica de la condicional if es :

if ( condicion_a_validar ) accion_a_ejecutar_si_es_cumplida;

Aunque la expresión anterior es totalmente válida, es común que se coloquen llaves { } en el código que se ejecuta, esto ayuda en casos de expresiones largas y visualmente separa el contenido del demás código, entonces sería algo así:

if ( condicion_a_validar ) {
  accion_a_ejecutar_si_es_cumplida;
}

Muy bien, ya sabemos la sintaxis básica, ahora analiza el siguiente ejemplo:

<?php
  $foo = 2000;
  $x = 20;
  if( $x < $foo ) { 
 	echo ' Asi es, foo = 2000';
  }
?>

Anteriormente has practicado el uso de variables, ahora te enfocarás en la expresión donde está if. Si traducimos la expresión a español, estamos diciendo: “Si el valor de $x es menor que el valor de $foo, entonces escribe esta frase con echo”. Surgen varias preguntas con base en esta situación, por ejemplo, ¿qué pasa si cambiamos el operador a >? O bien, ¿qué ocurre al ejecutar el código?

No ocurre nada al ejecutar el código modificado porque en esta expresión estamos ordenándole a PHP que sólo ejecute la acción si y sólo si la condicional es verdadera, y obviamente 20 no es mayor que 2000. Para los casos donde requerimos de una respuesta cuando la condición es distinta a lo que esperábamos, o simplemente no se cumple, utilizamos else, como en este ejemplo:

<?php
  $foo = 2000;
  $x = 20;
  if( $x > $foo ){ 
 	echo 'Asi es, $x  es mayor!';
  } else {//no se cumple la condicion, avisemos!
     echo 'Parece que $x no es mayor!';
  }
?>

Por otro lado, la condicional elseif se utiliza cuando necesitamos validar múltiples valores. Por ejemplo:

<?php
$foo = 2000;
  $x = 20;
  if( $x > $foo ){ 
 	echo 'Asi es, $x es mayor!';
  } elseif ( $x != $foo ) { //otra validacion :)
     echo 'Definitivamente $x y $foo no son iguales!';
  }
?>

Ahora, ejecuta el código y analiza los resultados.

Haz clic en el botón para acceder a la práctica.


Condicional switch

Esta condicional es increíblemente útil en situaciones donde una variable o el resultado de una expresión puede tener múltiples valores que ejecutan distintas acciones. ¿Quedó claro? Quizá no fue así, veamos un ejemplo para ilustrarlo. Observa la diferencia entre este código resuelto con if/elseif:

<?php
  $page = "Galeria"; //cambia este valor para que veas los resultados
  if($page == "Home"){
     echo "Estas en home";
  } elseif ($page == "Galeria"){
     echo "Estas en galeria";
  } elseif ($page == "Contacto"){
     echo "Estas en contacto";
  }
?>

Este programa funciona perfectamente, sin embargo utiliza muchas veces $page. ¡Podemos hacerlo mejor! Escribe esta nueva versión hecha con switch:

<?php
$page = "Home"; //cambia este valor para que veas los resultados
 switch ($page) {
    case "Home":
    echo "Estas en home";
    break;
    case "Galeria":
    echo "Estas en galeria";
    break;
    case "Contacto":
    echo "Estas en contacto";
    break;
 }
?>

Todo se ve más organizado y solamente mencionamos a la variable $page al principio de la construcción de la expresión. Cada bloque de código se ejecuta de arriba hacia abajo, revisando el case de cada expresión. Si se encuentra una opción acorde al valor buscado se ejecuta el código y el comando break detiene la acción.

Si no se incluyen los estatutos “break” y el caso de inicio se evalúa en verdadero los casos siguientes se ejecutarán.

Acción  "Default"

Algo muy común en las sentencias "switch" es incluir una acción predeterminada si ninguna de la condiciones se cumplen. Por ejemplo, en el caso del código anterior se puede agregar las siguientes líneas inmediatamente antes del símbolo "}":

default:
echo "Desconocido";

Esto hará que si no se cumple ninguna de las condiciones anteriores se despliegue la palabra “Desconocido”.

Operadorcondicional

Observa este código:

<?php
  $altitud = 1;
  echo $altitud >= 1 ? "Buena altitud" : "Elevese pronto!";
?>

Podemos traducir este programa de la siguiente manera: "si $altitud es mayor o igual a 1, entonces podemos seguir volando; pero si $altitud no es mayor o igual a 1, ¡hay que elevarse!". Deducimos entonces que el operador ? funciona como una versión de if...else pero de manera compacta.

A continuación se asigna el valor de la condicional a un booleano:

<?php
  $altitud = 4;
  $buenaAltitud = $altitud <= 1 ? FALSE : TRUE;
  echo $buenaAltitud; // regresa 1 (o TRUE, recuerdas?)
?>

En este caso evaluamos si la altitud es menor que 1. El valor que tenemos es cuatro, por lo que la respuesta es la segunda opción (TRUE) que nos regresa el valor 1. Si el valor de $altitud fuera menor a 1, la respuesta seria FALSE que nos regresa un campo vacío (NULL).

Tomando como base esta expresión:

$articulo = $articulo >= $nuevo ? $usado : $nuevo;

Ahora desarrolla un ejemplo para que te dé una respuesta y explica el procedimiento.

Haz clic en el botón para acceder a la práctica.


3.3 Bucles

Frecuentemente necesitamos repetir una secuencia de código constantemente, hasta que suceda una acción que dispare algún comportamiento. Los videojuegos y las animaciones interactivas son un buen ejemplo de estos procedimientos de repetición. En PHP tenemos varios métodos de repetición (bucle o loop), cada uno con sus propias características. ¡Veamos el primero!

While

<?php
  $altitud = 100;
  while ($altitud > 30) {
     echo "Buena altitud, puede seguir en curso!"; 
  }
?>

Este tipo de loop le indica al servidor ejecutar una serie de órdenes mientras una condición dada sea verdadera. Observa este ejemplo:

La expresión while ($altitud > 30), significa que mientras la altitud sea mayor a 30 el avión en el que vamos no corre peligro y puede seguir en curso. Si ejecutamos este programa, notarás que echo se repite infinitamente hasta que detengas el proceso o de alguna manera cambies el valor de $altitud.

En este ejemplo, le ordenamos al programa que se ejecute un determinado número de veces:

<?php
$factor = 1;
  while ($factor <= 12) {
 	echo "$factor por 12 es " . $factor * 12 . "<br>";
 	++$factor; //aumenta el valor actual + 1
  }
?>

Puedes ver que iniciamos la variable $factor con un valor de 1. En el loop while ($factor <= 12) lo que estamos haciendo es ordenarle a PHP que las expresiones dentro de las llaves { } se ejecuten mientras $factor sea menor o igual que 12.

Dentro de las llaves se hace una multiplicación simple y se imprimen los resultados, además cada vez que se ejecuta el programa a $factor se le suma 1. ¿Recuerdas a los operadores?

¡Un par de ejemplos más y terminamos este método!

Observa este ejemplo:

<?php
  $num = 0;
  while ($num < 5) { //repite hasta que se cumpla!
  ++$num; //aumenta mi valor 1 cada vez
  echo $num; //ya sabes que hago verdad?
  }
?>

En este ejemplo la variable $num vale 0 al principio. La orden dada es que el código se ejecute hasta que el valor de $num no sea menor a 5. Cada vez que se ejecuta el código estamos agregando 1 más al valor de $num hasta que se cumple la condición y se detiene el programa. Observa en los dos ejemplos anteriores que el código se ejecuta como cascada, por lo que el orden de las instrucciones es importante.

Do...while

Este tipo de bucle es una variación de while, con él buscamos que el código se ejecute por lo menos en una ocasión y después de esto sólo cuando cierta condición se presente. Pon atención al siguiente ejemplo:

<?php
$factor = 1;
  do {
 	echo "$factor por 12 es " . $factor * 12;
 	echo "<br>";
  }
  while (++$factor <= 5);
?>

En esta ocasión puedes ver que la variable comienza en 1, esto es porque el programa se ejecuta de inmediato, sin tiempo para agregarle valores. Una vez que se ejecuta el programa, se cambia a modo de condición y sólo se ejecuta hasta que $factor sea menor o igual a 5.

for

Este es el más poderoso argumento para hacer bucles, ya que configura las variables al entrar en el bucle, valida las condiciones que se están ejecutando en él y modifica las variables después de cada iteración. Su constructor sería algo como esto:

for (variable_inicializada ; condicion_a_cumplir; expresion_modificadora) {
  //código a ejecutar cada vez
}

¿Necesitas un ejemplo?

<?php
for ($factor = 1 ; $factor <= 4 ; ++$factor) echo "$factor por 12 es " . $factor*12 . "<br>";//
?>

Los anteriores ejemplos de multiplicación tenían más líneas de código, utilizando for reducimos todo a un par de líneas. Observa el enunciado siguiente:

for ($factor = 1; $factor <= 4; ++$factor)

Entre los paréntesis primero se coloca la variable con el valor inicial, luego la condición que se debe de cumplir para que se ejecute y al final se agrega una expresión que modifica el valor de la variable cada que se ejecuta el programa. En otras palabras, esta expresión significa “dado que $factor es igual a 1; ejecuta esta acción hasta que $factor sea menor o igual a 4; cada vez que lo ejecutes agrégale 1 más a $factor”.

Hagamos otro ejercicio, pero esta vez usemos algunos arrays para divertirnos:

<?php
  $comida = array ("Pasta Arrabiata", "Filete de Atun", "Arrachera Tradicional");   
  for ($i = 0 ; $i <= 2 ; ++$i) {
  echo $comida[$i] . "<br>";
  }
?>

¿Puedes explicar este código? ¿Por qué $i = 0?

Haz clic en el botón para acceder a la práctica.


Cierre


A lo largo del tema has visto distintos conceptos, en primera instancia aprendiste acerca de las expresiones y su uso. De igual forma pudiste conocer sobre los valores booleanos y la forma en que éstos interactúan dentro de PHP. Además ya sabes cómo usar expresiones condicionales, tales como if, else o switch. Por último puedes repetir código en un bucle hasta que se cumpla alguna condición.

Checkpoint


Asegúrate de poder:

  • Comprender la estructura de las expresiones.
  • Utilizar condicionales para comparar, ejecutar y evaluar expresiones.
  • Repetir una secuencia de código a través de los bucles.

Referencias


  • Boronczyk, T., Naramore, E., Gerner, J., Le Scouarnec, Y. y Stolz, J. (2009). Beginning PHP 6, Apache, MySQL 6 Web Development. EE. UU.: Wiley.
  • Nixon, R. (2014). Learning PHP, MySQL & JavaScript With jQuery, CSS & HTML5. EE. UU.: O’Reilly Media.