Ir al contenido principal

Aprendiendo PHP - Nociones básicas (III)

Con este artículo terminamos la parte de "Nociones Básicas" de PHP:
  • Estructuras de control; break, continue y goto
  • Cómo cargar ficheros externos


ESTRUCTURAS DE CONTROL

Condicionales

if ($a == 13) {

   // código

elseif ($a == 27) {

   // código

else {

   // código

}

switch ($a) {

case 1:

   // código

break; // Sin el break, se ejecutarían los bloques siguientes

case 2:

   // código

break;

default:

   // código

}

Iterativas

while ($i < 13) {

   $i++;

}

do {

   $i++;

} while ($i < 13);

for ($i = 0; $i < 13; $i++) {

   // código

}

// foreach para recorrer arrays

$colores = array ('Rojo','Verde','Amarillo');

foreach ($colores as $color) {

   echo "$color ";

} // Se muestra Rojo Verde Amarillo

$colores = array ('Rojo' => 'P','Verde' => 'S',

                  'Amarillo' => 'C');

foreach ($colores as $color => $accion) {

   echo "$color: $accion; ";

} // Se muestra Rojo: P; Verde: S; Amarillo: C;

Ejemplo: Tabla de multiplicar del 7. Se mostrarán los 3 primeros valores.
<?php
   define(MAX,3);
   define(TABLA, 7);
       // ejemplo con while
   $i = 1;
   while ($i <= MAX) {
   printf("%d * %d = %d; ", TABLA, $i, TABLA*$i);
   $i++;
 }
   // ejemplo con for
   for ($i = 1; $i <= MAX; $i++) {
      printf("%d * %d = %d; ", TABLA, $i, TABLA*$i);
   }
   // Tanto el while como el for muestran 
   // 7 * 1 = 7; 7 * 2 = 14; 7   * 3 = 21;
?>
Se para la ejecución de una estructura iterativa con break
<?php
   $i = 0;
   while ($i < 13) {
      $i++;
      if ($i == 3) break;
   }
   echo $i; // 3
?>
Para terminar una iteración y comenzar la siguiente, se utiliza continue
<?php
   $i = 0;
   while ($i < 6) {
       $i++;
       if ($i == 3 || $i == 5) continue;
       echo $i;
   } // La salida es 1246
?>
Con PHP 5.3 se incluye la sentencia goto, que sirve para saltar a otra sección del programa, haciendo uso de etiquetas.
<?php
   goto dos;
   echo 1;
   dos:
   echo 2;
   // La salida de este programa es 2
?>
PHP proporciona 4 maneras de cargar ficheros externos: include(), include_once(), require() y require_once().


Fichero var.php

<?php

   $user = 'Ana';

?>

Fichero index.php

<?php

   include_once 'var.php';

   echo "Hola $user"; // “Hola Ana”

?>

Si el fichero que se intenta cargar no existe:
  • require() muestra un error fatal y detiene la ejecución:
             Fatal error: require() [function.require]: Failed opening required 'var2.php'
  • include() muestra un warning, pero no detiene la ejecución.
             Warning: include_once(var2.php) [function.include-once]: failed to open stream
Se recomienda utilizar include_once y require_once porque éstos comprueban si el fichero ya ha sido cargado antes de hacerlo. Si ya se cargó, no lo vuelven a hacer. Esto mejora el rendimiento y ahorra recursos.
Veamos con un ejemplo la diferencia de utilizar include e include_once al cargar el mismo fichero.


Fichero var.php

<?php

   $num +=1;

?>

Fichero index.php (utilizando include)

<?php

   include 'var.php';

   echo $num; // Muestra 1

   include 'var.php';

   echo $num; // Muestra 2

?>

Fichero index.php (include_once)

<?php

   include_once 'var.php';

   echo $num; // Muestra 1

   include_once 'var.php';

   echo $num; // Muestra 1

?>

Se pueden omitir los paréntesis en include(), include_once(), require() y require_once() porque no son realmente una función, son constructores del lenguaje.
EJERCICIOS

1) ¿Cuál es el valor final de $i?
<?php
   $i = 1;
   for (;;) {
      if ($i > 13) break;
      $i++;
   }
?>
a) Hay un error de sintaxis
b) 12
c) 13
d) 14

2) Al ejecutar el siguiente código ¿Qué valor tendrá el array $a?
<?php
   $a = array("rojo","verde");
   foreach ($a as $key => $valor) {
      if ($valor == "verde") $valor="rojo";
   }
?>
a) array("rojo","rojo");
b) array("verde","verde");
c) array("rojo","verde");
d) array("verde","rojo");

3) ¿Qué valor tendrá $i al finalizar la ejecución del siguiente código?
<?php
   $i = 0;
   while ($i < 13) {
      goto etiq;
      $i++;
   }
   $i++;
   etiq:
   --$i;
?>
a) 0
b) -1
c) 1
d) 2

4) ¿Qué se mostrará por pantalla?
<?php
   $i = 2;
   switch ($i) {
   case 1:
      echo 'uno ';
      break;
   case 2:
      echo 'dos ';
   case 3:
      echo 'tres ';
   default:
      echo 'default ';
   }
?>
a) dos
b) dos tres
c) dos tres default
d) Hay errores de sintaxis

5) ¿Qué mostrará el siguiente código?
<?php
   if (true)
   if (false)
   echo 'rojo';
   else
   echo 'verde';
?>
a) Hay errores de sintaxis
b) verde
c) rojo
d) No se muestra nada
e) rojo verde

6) ¿Cuál es el valor final de $i y $j?
<?php
   $j = 2;
   for ($i=0; $i<13; $i++) {
      $j++;
   }
?>
a) i: 13; j: 14
b) i: 12; j: 14
c) i: 13; j: 15
d) i: 12; j: 15

7) Escribe un programa que a partir del 1 al 5, devuelva su número romano correspondiente. Crea un fichero .php donde almacenes la variable con el valor que quieras del 1 al 5 e inclúyelo en el fichero principal.

Comentarios