if else e if else if PHP. Condicional ternario. Evaluar variables. Ejemplos y ejercicios resueltos. (CU00817B)

Resumen: Entrega nº17 del Tutorial básico del programador web: PHP desde cero.
Codificación aprenderaprogramar.com: CU00817B 

 

 

ESTRUCTURAS CONDICIONALES

En PHP existen una serie de instrucciones que permiten tomar decisiones lógicas cuando programamos: estas instrucciones, comunes a distintos lenguajes de programación, se suelen denominar de forma general "condicionales".

 

 

 

  • if...else

  • if...elseif...else

  • switch

 

 

CONDICIONAL IF…ELSE EN PHP

Estas instrucciones son quizás las más usadas de todos los lenguajes de programación, ya que son las más básicas. IF (en español: si…) ELSE (en español: sino…). La estructura general de un condicional if else es la siguiente:

if(expresión) {

... sentencias 1, 2, 3 … ;

} else {

... sentencias A, B, C …;

}

 

 

En este trozo de código estaríamos diciendo que si la expresión se cumple se ejecutan las sentencias 1, 2, 3…, y en caso de que no se cumpliese la expresión se ejecutarían las sentencias que están dentro del else, es decir, las sentencias A, B, C …

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$galletas = true;

if($galletas == true) {

echo 'Hay galletas';

} else {

echo 'No hay galletas';

}

?>

 

 

En este ejemplo, estamos dando un valor $galletas y comprobamos si el valor de esta variable es true o no, introduciéndolo en la expresión del condicional. Tal cual está, este ejemplo produciría el resultado 'Hay galletas', aunque si cambiásemos $galletas = true; por $galletas = false daría como resultado la segunda sentencia.

 

 

Escribe ahora este otro código guárdalo con un nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$galletas = true;

if($galletas == true){

?>

<br/>

<p>&nbsp ;&nbsp ;&nbsp ;&nbsp ;---------------------------------</p>

<?php

echo '&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;Hay galletas';

echo '<br/>';

echo '<br/>';

echo '&nbsp ;&nbsp ;&nbsp ;&nbsp ;---------------------------------';

} else {

echo 'No hay galletas';

}

?>

 

 

 

Como podrás comprobar, el código produce el mismo resultado. Unicamente hemos introducido algunos caracteres para mejorar la forma en que se ve (recordar que &nbsp seguido de un punto y coma, sin espacio entre ambos, equivale a un espacio en blanco en HTML). Compara las similitudes y diferencias entre los dos códigos que hemos escrito. En nuestro ejemplo2 podrás comprobar que hemos escrito un fragmento de código php, luego un fragmento de código html y luego otro fragmento en php. Si te fijas, no hemos utilizado las etiquetas de apertura y cierre de html, aunque hubiera sido quizás más correcto hacerlo, es decir, escribir:

<html>

<?php

$galletas = true;

if($galletas == true){

?>

<br/>

<p>&nbsp ;&nbsp ;&nbsp ;&nbsp ;---------------------------------</p>

<?php

echo '&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;&nbsp ;Hay galletas';

echo '<br/>';

echo '<br/>';

echo '&nbsp ;&nbsp ;&nbsp ;&nbsp ;---------------------------------';

} else {

echo 'No hay galletas';

}

?>

</html>

 

 

Como comprobarás, a veces los navegadores son capaces de interpretar el código aunque falten algunas etiquetas o contenga algunos errores. Esta es una de las cuestiones que diferencia HTML de lenguajes de programación en sentido estricto como C, Java o Visual Basic, donde la sintaxis es mucho más estricta.

En este código además podemos señalar:

  • Usamos el código &nbsp que en HTML significa “un espacio”. Recuerda que HTML omite los espacios antes y después de una cadena de texto. Por ello hemos de especificar que se introduzcan espacios con &nbsp.

  • Un salto de línea, que introducimos gracias a la etiqueta <br/>, podemos escribirlo tanto fuera del código php como dentro de él. Para introducirlo dentro de php, hemos de ponerlo dentro de un echo, que es la forma que tenemos de indicarle a php de que dé salida a esa etiqueta como código html.

 

¿Qué pasaría si introdujéramos una etiqueta html como <br/> directamente dentro del código php? Pruébalo y comprobarás que en el navegador se muestra un mensaje de error de este tipo:

Parse error: syntax error, unexpected '<' in /home/m/dom/mi.com/public_html/prueba.php on line 11

Esta es una cuestión que debes de tener en cuenta: para introducir html debes de cerrar un bloque php o usar una instrucción echo dentro del bloque php. La instrucción echo viene significando “dar salida html a lo que va a continuación”.

 

 

CONDICIONALES IF...ELSE IF...ELSE EN PHP

La estructura de estas instrucciones viene a ser muy similar que la anterior. Su significado: “Si ocurre esto, haz esto, sino si ocurre esta otra cosa, haz esto otro, sino si ocurre esta otro cosa, haz …”. La estructura general de un condicional if else if [else] es:

if(expresión) {

... sentencias 1, 2, 3, …;

} else if(expresión) {

... sentencias A, B, C, …;

} else {

... sentencias M, N, O, …;

}

 

 

Esta es la síntaxis con la que debe ser usada else if. Un else if se ejecutará, siempre y cuando, no haya alguna respuesta verdadera en el if o else if anterior; luego de que se llega al final de los else if, y ninguno ha sido verdadero, se ejecutará lo que está dentro del else final.

Pueden haber varios else if, pero estos están siempre dentro de un if y terminarán con un else (sólo uno) final.

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como ejemplo3.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$test = 33;

if ($test > 40) {

echo "Sí, $test es mayor que 40.";

} else if ($test > 35) {

echo "Sí, $test es mayor que 35.";

} else if ($test > 30) {

echo "Sí, $test es mayor que 30.";

} else {

echo "No, $test es menor que 40, 35 y 30.";

}

?>

 

 

En este caso la respuesta sería: Sí, 33 es mayor que 30.

Si el valor de $test se cambia a 22, la respuesta sería: No, 22 es menor que 40, 35 y 30.

 

 

OPERADOR CONDICIONAL TERNARIO

Para escribir condicionales la estructura básica de lenguajes como PHP, JavaScript, Java, y otros es la sentencia if. Otro tipo de condicionales como el switch o el else if pueden ser reemplazados por if. Hay otra sintaxis de condicional que se denomina operador condicional ternario y que se escribe con expresiones que incluyen una interrogación y dos puntos como: a ? b : c;

La sintaxis y significado del operador condicional ternario (válida para diferentes lenguajes, como PHP, JavaScript, Java, etc.) es la siguiente:

expresiónConValorBooleano ? expresión1 : expresión2;

 

Interpretación: si la expresiónConValorBooleano es cierta se ejecuta la expresión1, y en caso contrario se ejecuta la expresión2.

 

 

Ejemplos. Supongamos que tenemos cuatro variables: A = 5, B = 3, C = -7 y D = 5

Expresión

Resultado

A==5 ? dispara(): espera();

Se ejecuta dispara()

A<B ? dispara(): espera();

Se ejecuta espera()

B<C ? dispara(): espera();

Se ejecuta espera()

A<B && B>C ? dispara(): espera();

Se ejecuta espera()

A<B && B>C || B==3 ? dispara(): espera();

Se ejecuta dispara()

A==5 ? A=20: A=1;

Si A valía 5 ahora vale 20, caso contrario ahora vale 1.

B = B==3 ? B*10: B*100;

Se trata de una asignación: si B valía 3, ahora B vale 10 veces

lo que valía, caso contrario ahora B vale 100 veces lo que valía.

 

 

El operador ternario puede ser insertado en sentencias de ejecución donde no se permite la inserción de if, por ejemplo en una operación de asignación o en la variable de control de un bucle for. Usar el operador condicional ternario tiene ventajas e inconvenientes.

 

 

VENTAJAS E INCONVENIENTES DEL OPERADOR CONDICIONAL TERNARIO

En la siguiente tabla resumimos las ventajas e inconvenientes del operador condicional ternario comparándolo con el if tradicional.

Condicional ternario

If tradicional

Permite la escritura compacta, permitiendo ahorrar escritura de código.

Obliga a escribir más sentencias para conseguir el mismo resultado.

Resulta más difícil de leer, entender y depurar

Resulta más fácil de leer, entender y depurar

No todos los programadores lo usan, algunos ni siquiera lo conocen.

Todos los programadores lo usan y lo conocen.

Se admite en la sintaxis de los lenguajes en lugares donde no se admite la sentencia if

No es válido en ciertas ubicaciones donde sólo se admiten expresiones, pero puede hacerse la evaluación antes del punto donde sea necesario el condicional.

Criticado por algunos expertos, adorado por otros

Uso y aceptación cuasi-universal

 

 

EJEMPLOS DE USO EN PHP

Escribe este código, guárdalo como archivo php y comprueba los resultados de ejecución. Razona sobre los resultados obtenidos y trata de explicar paso a paso la lógica de todo lo que hace el código.

<!DOCTYPE html>

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">

</head>

<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos PHP</h3></div>

<?php

$A=5; $B=3; $C=-7; $D=5;

$msg = '';

$A==5 ? $msg='A es 5<br/>': $msg='A no es 5<br/>';

echo $msg;

$A<$B ? $msg='A es menor que B<br/>': $msg='A es mayor o igual que B<br/>';

echo $msg;

$B<$C ? $msg='B es menor que C<br/>': $msg='B es mayor o igual que C<br/>';

echo $msg;

?>

</body>

</html>

 

 

El resultado esperado es que se muestre por pantalla:

Cursos aprenderaprogramar.com

Ejemplos PHP

A es 5

A es mayor o igual que B

B es mayor o igual que C

 

 

EJERCICIO 1

Ejecuta este código y responde:

a) ¿Qué resultado se obtiene por pantalla?

b) Modifica el código sustituyendo el operador ternario por if else para que el resultado obtenido sea el mismo.

<?php

$haceFrio = 15;

$respuesta ="";

$temperatura = ($haceFrio<20) ? $respuesta = "Hace frio" : $respuesta = "No hace frio";

echo $respuesta;

?>

 

 

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.

 

 

EJERCICIO 2

Define las variables $tipo, $grosor, $diametro y $marca. Establece que el tipo sea “Rueda de camión”, el grosor 0.33, el diámetro 1.25 y la marca “Kimashuki”. Crea el código PHP donde a través de condicionales if realices la siguiente comprobación: si el diámetro es superior a 1.4 debe mostrarse por pantalla el mensaje “La rueda es para un vehículo grande”. Si es menor o igual a 1.4 debe mostrarse por pantalla el mensaje “La rueda es para un vehículo pequeño”. En otro caso, debe mostrarse “No existe un tamaño de rueda válido”.

 

Modifica los valores de diámetro y comprueba que los resultados obtenidos por pantalla sean correctos. Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

¿Puedo yo aprender?

Seas o no del área informática, si quieres aprender a programar te ofrecemos una solución guiada y personalizada: realizar un curso tutorizado on-line. Con este tipo de curso, podrás aprender a programar de forma ágil y amena.

Acceder a detalles y precios de los cursos tutorizados on-line

Política sobre cookies

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, de acuerdo a tus hábitos de navegación.

Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra Política de Cookies.

En Facebook!

Ahora puedes seguirnos en Facebook. Noticias, novedades y mucho más ¡Te esperamos!

RANKING APR2+

Ranking de lenguajes y entornos de programación aprenderaprogramar.com
 

FEBRERO - MARZO 2017

1. Java / J2EE
2. Entornos Oracle
3. JavaScript, jQuery
4. .NET, C#
5. Entornos SQL Server
6. HTML, CSS
7. Php, MySql
8. Android, iOS


Acceder a detalles sobre el ranking de programación aprenderaprogramar.com

FOROS APR2+

Pregunta, responde, consulta, lee, intercambia...

Participa!!! Entra en los foros aprenderaprogramar.com.

             Copyright 2006-2017 aprenderaprogramar.com                La web abierta a cualquier persona interesada en la programación