AnteriorPosterior

4. Condiciones en PHP

  Curso: Introducción a PHP

4.- Condiciones en PHP

En casi cualquier programa real, deberemos comprobar si se cumple una cierta condición. En PHP, la forma de hacerlo es empleando la orden if ("si", en inglés), seguido por la condición entre paréntesis, e indicando finalmente entre llaves los pasos que queremos dar si se cumple la condición, así :

if (condición) 
{ 
    sentencias 
}

Un primer ejemplo (condic01.php) podría ser:

<html>
<body>
<?php
  // condic01.php - Condiciones con "if", 1
  if (3>2) {
    echo "3 es mayor que 2";
  }
?>
</body>
</html>

Lo habitual es no comparar valores prefijados, sino el valor de una variable, que previamente hayamos leído de algún formulario o de una base de datos. Un segundo ejemplo (condic02.php) que compare un variable con un valor podría ser:

<html>
<body>
<?php
  // condic02.php - Condiciones con "if", 2
  $numero = 3;
  if ($numero>2) {
    echo "El numero es mayor que 2";
  }
?>
</body>
</html>

También podemos usar variables "booleanas", con valor de verdad true o false (también se pueden usar en mayúsculas).

Los operadores de comparación que podemos emplear son:

Operador Nombre Ejemplo Es cierto cuando:
== Igual $a == $b $a es igual a $b
== Idéntico $a === $b $a es idéntico (en valor o tipo) a $b
!=, <> Distinto $a != $b $a es distinto a $b
!== No idéntico $a !== $b $a es distinto en valor o tipo a $b
< Menor que $a < $b $a es menor que $b
> Mayor que $a > $b $a es mayor que $b
<= Menor o igual $a <= $b $a es menor o igual que $b
>= Mayor o igual $a >= $b $a es mayor o igual que $b

Un ejemplo de uso de algunos de ellos sería:

<html>
<body>
<?php
// condic03.php - Condiciones con "if", 3
$n = 5;
if ($n == 5)
    echo "n vale 5 <br />";
 
$verdad = true;
if ($verdad)
    echo "la condición es verdad <br />";
 
if ($n = 4)
    echo "n vale 4<br />";
 
if ("7" == 7)
    echo '"7" es igual a 7<br />';
 
if ("6" !== 6)
    echo '"6" no es idéntico a 6<br />';
?>
</body>
</html>

que escribiría


n vale 5 
la condición es verdad 
n vale 4
"7" es igual a 7
"6" no es idéntico a 6

Cuidado con la tercera línea del resultado: si, por error, hacemos algo como "if ($n = 4)", con un único símbolo de igualdad, no estamos comparando, sino asignando un valor. Si esa asignación tuviera el valor cero, se tomaría como equivalente a "false"; si tiene cualquier otro valor (como en nuestro caso), se considera equivalente a "true".

Si queremos comprobar varias condiciones a la vez, las podemos enlazar con "y", "o", "no", que se pueden escribir de dos formas distintas:

Operador Nombre Ejemplo Devuelve cierto cuando:
&&, and
Y ($a>2) && ($b<3)
($a>2) and ($b<3)
Cuando las dos condiciones son verdaderas.
||, or
O ($a>2) || ($b<3)
($a>2) or ($b<3)
Cuando al menos una de las condiciones es verdadera.
! No ! ($a>2) Niega el valor de la expresión.

Además, con la orden "else" podemos indicar qué pasos queremos dar si no se cumple la condición, así:

if (condición) 
{ 
    sentencias 
}
else 
{ 
    sentenciasAlternativas 
}

Un ejemplo que use "else" y estos operadores (condic03.php) sería:

<html>
<body>
<?php
  // condic04.php - Condiciones con "if" y "else", 1
  $nombre = "Juan";
  $num = 3.5;
  if (($nombre != "Juan") or (!($num>4.0))) {
    echo "El nombre no es Juan o el numero es menor o igual que 4";
  }
  else {
    echo "Se llama Juan y el numero es mayor que 4";
  };
?>
</body>
</html>

Ejercicios propuestos

  • 4.1: Crea una página con un formulario, que pida al usuario dos números y muestre su división si el segundo número no es cero, o el texto "No se puede dividir entre cero", en caso contrario.

También podemos comparar cadenas de texto, igual que hacemos con los números (y de forma mucho más sencilla que en lenguaje C), así (condic04.php):

<html>
$ <body>
<?php
  // condic05.php - Comparar valor de una cadena
  $nombre = "Juan";
  if ($nombre == "Juan") {
    echo "El nombre es Juan";
  }
?>
</body>
</html>

Ejercicios propuestos

  • 4.2: Crea una página con un formulario, que pida al usuario dos números y que permita escoger la operación a realizar (suma, resta, multiplicación o división), y calcule y muestre su resultado. Para escoger la operación puedes usar un "select" o "radio buttons".
  • 4.3: Crea una página con un formulario, que pida al usuario un nombre y una contraseña. Si el nombre es "yo" y la contraseña es "1234", dirá "Bienvenido"; de lo contrario, dirá "Acceso no permitido".
  • 4.4: Crea una página con un formulario, que pida al usuario dos números y le permita escoger el idioma en que quiere la respuesta (español o inglés). Deberá decir si el primer número es múltiplo del segundo (en el idioma escogido).

Si necesitamos comprobar varias condiciones, puede ser más cómodo usar la orden "switch", en vez de varios "if" seguidos.

Un ejemplo de su manejo (condic05.php) es:

<html>
<body>
<?php
  // condic06php - Comprobar múltiples valores con "switch"
  $numero = 4;
  echo "El n&uacute;mero es: ";
  switch($numero) {
    case 1:
      echo "1";
      break;
    case 2:
    case 3:
      echo "2 o 3";
      break;
    case 4:
    case 5:
      echo "4 o 5";
      break;
    default:
      echo "No esta entre 1 y 5";
  }
?>
</body>
</html>

Es decir:

  • Después de "switch" se indica entre paréntesis el nombre de la variable que queremos comprobar.
  • Se abren llaves.
  • Cada valor que queremos evaluar se indica entre la palabra "case" y un símbolo de dos puntos.
  • A continuación se indican todos los pasos que queremos que se den si la variable tiene ese valor, terminados con "break".
  • Si queremos que se haga lo mismo para varios valores de la variables, se indican varios "case" seguidos, terminados en un único "break", como se ve en el ejemplo.
  • Para detallar lo que se debe hacer si el valor de la variable no es ninguno de los previstos, se usa la orden "default".

Nuevamente, al igual que ocurría con "if", también podremos manejar fácilmente cadenas con "switch" (cosa que no pasa en el lenguaje C, pero sí en otros más modernos como C#):

<html>
<body>
<?php
  // condic07.php - "switch" y cadenas de texto 
  $nombre = "Nacho";
  switch($nombre) {
    case "Juan":
      echo "El nombre es Juan";
      break;
    case "Nacho":
      echo "El nombre es Nacho";
      break;
    default:
      echo "El nombre no es Juan ni Nacho";
  }
?>
</body>
</html>

Ejercicios propuestos

  • 4.5: Crea una página web que pida al usuario un número de mes (del 1 al 12) y muestre el nombre de ese mes (por ejemplo, "mayo" si el mes es el 5), usando "switch".
  • 4.6: Crea una página que pida al usuario un número del 1 al 10 y escriba el nombre del número (por ejemplo "tres" para el 3), usando "switch".

Actualizado el: 06-12-2013 11:04

AnteriorPosterior