Estructuras Condicionales en PHP


 

Estructura: if

Cuando se pretende que el programa, una vez llegado a un cierto punto, tome un camino concreto en determinados casos y otro diferente si las condiciones de ejecución difieren, se utiliza el conjunto de instrucciones: if, else y elseif.

La estructura base de este tipo de instrucciones es la siguiente:

if (Condicion)
   {
     Instrucción 1;
     Instrucción 2;
          :
   }
   else
   {
     Instrucción A;
     Instrucción B;
          :
   }

Cuando la ejecución llega al punto donde se encuentra la instrucción if, el programa verificará el cumplimiento o no de la condición.
Si la condición es verdadera se ejecutarán las instrucciones 1 y 2, de lo contrario, se ejecutarán las instrucciones A y B. En los casos en que las condiciones sean varias, se pueden utilizar los if de un modo denominado anidado o anillado, como se indica de la manera siguiente:

if (Condicion 1)
   {
     Instrucción 1;
     Instrucción 2;
          :
   }
   else
     if (Condicion 2)
       {             
         Instrucción A;
         Instrucción B;
              :
       }
       else
       {
         Instrucción X;
         Instrucción Z;
              :    
       }         

De este modo se pueden introducir tantas condiciones como se quiera dentro de la condición principal. Una variante de este sistema es utilizando la sentencia elseif, que permite en una sola línea introducir una condición adicional:

if (Condicion 1)
   {
     Instrucción 1;
     Instrucción 2;
          :
   }
   elseif (Condicion 2)
   {
     Instrucción A;
     Instrucción B;
          :
   }
   else
    {
      Instrucción X;
      Instrucción Z;
           :    
    }         

Ejemplo Práctrico: Mostrar en una página el idioma con el cual se está trabajando.

<HTML>
<HEAD>
<TITLE>Detector de Lengua</TITLE>
</HEAD>
<BODY>
<?PHP
 //Leer del navegador cuál es su lengua oficial
 $idioma=substr($HTTP_ACCEPT_LANGUAGE,0,2);

 //Formular las posibilidades que se pueden dar
 if ($idioma == "es")
  echo "Idioma Español";
   elseif ($idioma == "fr")
     echo "Idioma Frances";
       else
         echo "Idioma Ingles";
?>
</BODY>
</HTML>

En este ejemplo se hace uso de la variable de servidor $HTTP_ACCEPT_LANGUAGE. De esta variable se rescatan los dos primeros caracteres, esto se logra con la función substr().

Los dos caracteres del lenguaje almacenados en la variable $idioma son comparados con las constantes "es" y "fr". En caso de coincidencia se mostrará la leyenda correspondiente de lo contrario se muestra Idioma Ingles. Notar que en estas líneas, los condicionales if y elseif, no llevan llaves en su interior, esto es debido a que si una condición involucra a una sola sentencia, no son necesarias las llaves. En este caso, cada if contiene una sola sentencia, por lo tanto no se colocaron las llaves. 

Sentencia Switch

En algunos casos es necesario comparar a una variable con varias opciones posibles. Esto, sin ningún problema se puede realizar con una serie de estructuras  if, uno debajo del otro, pero resulta mas práctico utilizar la instrucción switch.
La estructura de la instrucción switch es la siguiente:

switch ($opcion)
  {
     case primerValor  : Instrucción 1; break ;
     case segundoValor : Instrucción 2; break ;
                :
     case ultimoValor  : Instrucción n; break ;
     default: Instrucciones;
  }

En este caso, si la variable $opcion tiene almacenado el dato: primerValor, se ejecutará la Instrucción 1, si tiene almacenado el dato: segundoValor se ejecutará la Instrucción 2 y así sucesivamente.
Si la variable $opcion no contiene ningunos de los valores predefinidos, se ejecutarán las Instrucciones situadas después de la palabra default.
La palabra clave break, es necesaria colocarla en cada opcion, porque de no ser así, se ejecutaran todas las Instrucciones de los demás case, sin verificarse los valores que toma la variable.

Ejemplo Práctico:
                        Permitir seleccionar el número de mes en un objeto select y mostrar el nombre del mes que le corresponde.
  
<Html>
<Title> Ejemplo del switch: Ej3.php </Title>
<Body>
  <?PHP
    if ($_REQUEST[boton] != "" )
     {
       $N = $_REQUEST[Numero];
       echo "<H2>";
       echo "Coresponde a:  ";
       switch ($N)
         { 
           case 1: echo "Enero"; break;
           case 2: echo "Febreo"; break;
           case 3: echo "Marzo"; break;
           case 4: echo "Abril"; break;
           case 5: echo "Mayo"; break;
           case 6: echo "Junio"; break;
           case 7: echo "Julio"; break;
           case 8: echo "Agosto"; break;
           case 9: echo "Septiembre"; break;
           case 10: echo "Octubre"; break;
           case 11: echo "Noviembre"; break;
           case 12: echo "Diciembre"; break;
        }
     }
     else
     {
  ?>
  <H2>
  <FORM ACTION="Ej3.php" METHOD="POST">
  Nombre del Mes
  <Hr>
  <Table Border="0" width="100%">
    <tr>
       <td width="40%">
       <p align="Center"> Ingrese el Número de Mes : </td>
       <td witth="60%"> <Select size=1 Name="Numero">
       <option value= "1">  1 </option>  
       <option value= "2">  2 </option>  
       <option value= "3">  3 </option>  
       <option value= "4">  4 </option>  
       <option value= "5">  5 </option>  
       <option value= "6">  6 </option>  
       <option value= "7">  7 </option>  
       <option value= "8">  8 </option>  
       <option value= "9">  9 </option>  
       <option value="10"> 10 </option>  
       <option value="11"> 11 </option>  
       <option value="12"> 12 </option>  
       </Select> </td>
    </tr>
    <tr>
       <td>
       <p align="Center">
       <Input type="Submit" Name="boton" value="Ver Resultado">
       </td>
    </tr>
  </Table>      
  <?PHP
     }
  ?>
</Body>
</Html> 

Ambito de una variable

El ámbito de una variable, es la sección en la cual la variable tiene validez. Por ejemplo, una variable definida dentro de una función tiene validez, solo dentro de esa función y no puede usarse fuera de esa función. Si una variable tiene el mismo nombre en el cuerpo del programa principal y dentro de una función, en esta función, prevalecerá el valor definido en la misma y no el valor global.

Ejemplo Páctico:

<Htm>
<Body>
<?PHP
  $N = 10; // Variable Global con valor 10
  function Mostrar()
   {
     $N = 5; // Variable Local con valor 5
     echo ("Aqui, dentro de la funcion, la variable
     N tiene el valor de: $N");
   }
  Mostrar();
  echo "<Br>";
  echo ("Aqui, fuera de la funcion, la variable N tiene el valor de: $N");
?>
</Body>
</Htm>