Sie sind auf Seite 1von 41

Sentencias de control y Variables de Tiempo y fecha

Cedeo P r o Quimis g r a m a c i Andrs n Av a n z a d a Luis Palma Andrade I nAlcvar g. Rubn Solrzano Vera Katiuska Quinto A

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 2

Objetivos
Estudiar los conceptos bsicos de sentencias y variables de tiempo y fecha en PHP. Comprender la estructura bsica de sentencias de control. Entender el funcionamiento de las variables de tiempo y fecha en PHP. Plantear pequeos ejemplos de aplicacin para el entendimiento del desarrollo en PHP.

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 3

Temtica

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 4

Introduccin
Todo script PHP est construido en base a una serie de sentencias. Una sentencia puede ser una asignacin, una llamada de funcin, un ciclo, una sentencia condicional o incluso una sentencia que no hace nada (una sentencia vaca). Las sentencias generalmente finalizan con un punto y coma. Adicionalmente, las sentencias pueden agruparse en un conjunto de sentencias, encapsulndolas entre corchetes. Un grupo de sentencias es una sentencia por s misma tambin. Los diferentes tipos de sentencias son descritos en este captulo.

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 5

Marco Terico
Sentencias de Control
En lenguajes de programacin, las sentencias de control o tambin llamadas estructuras de control permiten modificar el flujo de ejecucin de las instrucciones de un programa, as mismo tomar decisiones y realizar un proceso repetidas veces. Se trata de estructuras muy importantes, ya que son las encargadas de controlar el flujo de un programa, segn los requerimientos del mismo. Con las estructuras de control se puede: de acuerdo a una condicin, ejecutar un grupo u otro de sentencias (If-Then-Else y Select-Case) Ejecutar un grupo de sentencias mientras exista una condicin (DoWhile) Ejecutar un grupo de sentencias hasta que exista una condicin (DoUntil) Ejecutar un grupo de sentencias un nmero determinado de veces (For-Next) Todas las estructuras de control tienen un nico punto de entrada y un nico punto de salida. Las estructuras de control se puede clasificar en: secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la programacin se rija por los principios de la programacin estructurada.

if
El constructor if es una de las caractersticas ms importantes de muchos lenguajes, incluido PHP. Permite la ejecucin condicional de fragmentos de cdigo.
if (expresin) Sentencia

Como se describe en la seccin sobre expresiones, la expresin es evaluada a su valor booleano. Si la expresin se evala como TRUE, PHP ejecutar la sentencia y si se evala como FALSE la ignorar. El siguiente ejemplo mostrara a es mayor que b si $a es mayor que $b:
<?php if ($a > $b) { echo "a es mayor que b"; } ?>

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 6

Las sentencias if pueden anidarse dentro de otra sentencias if infinitamente, lo cual provee completa flexibilidad para la ejecucin condicional de diferentes partes del programa.

else
Con frecuencia se desea ejecutar una sentencia si una determinada condicin se cumple y una sentencia diferente si la condicin no se cumple. Esto es para lo que sirve else. El else extiende una sentencia if para ejecutar una sentencia en caso que la expresin en la sentencia if se evale como FALSE. Por ejemplo, el siguiente cdigo deber mostrar a es mayor que b si $a es mayor que $b y a NO es mayor que b en el caso contrario:
<?php if ($a echo } else echo } ?>

> $b) { "a es mayor que b"; { "a NO es mayor que b";

La sentencia else slo es ejecutada si la expresin if es evaluada como FALSE y si hay algunas expresiones elseif - slo se ejecuta si tambin todas son evaluadas como FALSE.

elseif/else if
elseif, como su nombre lo sugiere, es una combinacin de if y else. Del mismo modo que else, extiende una sentencia if para ejecutar una sentencia diferente en caso que la expresin if original se evale como FALSE. Sin embargo, a diferencia de else, esa expresin alternativa slo se ejecutar si la expresin condicional del elseif se evala como TRUE. Por ejemplo, el siguiente cdigo debe mostrar a es mayor que b, a es igual que b o a es menor que b:

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 7


<?php if ($a > echo } elseif echo } else { echo } ?>

$b) { "a es mayor que b"; ($a == $b) { "a es igual que b"; "a es menor que b";

Puede haber varios elseif dentro de la misma sentencia if. La primera expresin elseif (si hay alguna) que se evale como TRUE sera ejecutada. En PHP tambin se puede escribir 'else if' (en dos palabras) y el comportamiento sera idntico al de 'elseif' (en una sola palabra). El significado sintctico es ligeramente diferente (si se est familiarizado con C, este es el mismo comportamiento) pero la conclusin es que ambos resultaran tener exactamente el mismo comportamiento. La sentencia elseif es ejecutada solamente si la expresin if precedente y cualquiera de las expresiones elseif precedentes son evaluadas como FALSE, y la expresin elseif actual se evala como TRUE.

Sintaxis alternativa de estructuras de control


PHP ofrece una sintaxis alternativa para algunas de sus estructuras de control; a saber: if, while, for, foreach, y switch. En cada caso, la forma bsica de la sintaxis alternativa es cambiar el corchete de apertura por dos puntos (:) y el corchete de cierre por endif;, endwhile;, endfor;, endforeach;, o endswitch;, respectivamente.
<?php if ($a == 5): ?> //A es igual a 5 <?php endif; ?>

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 8 En el ejemplo anterior, el bloque HTML "A es igual a 5" se anida dentro de una sentencia if escrita en la sintaxis alternativa. El bloque HTML se mostrara solamente si $a es igual a 5. La sintaxis alternativa tambin se aplica a else y elseif. El siguiente es una
<?php if ($a == 5): echo "a igual 5"; echo "..."; elseif ($a == 6): echo "a igual 6"; echo "!!!"; else: echo "a no es 5 ni 6"; endif; ?>

estructura if con elseif y else en el formato alternativo:

While
Los bucles while son el tipo ms sencillo de bucle en PHP. Se comportan igual que su contrapartida en C. La forma bsica de una sentencia while es:
while (expresin) Sentencia

El significado de una sentencia while es simple. Le dice a PHP que ejecute las sentencias anidadas, tanto como la expresin while se evale como TRUE. El valor de la expresin es verificado cada vez al inicio del bucle, por lo que incluso si este valor cambia durante la ejecucin de las sentencias anidadas, la ejecucin no se detendr hasta el final de la iteracin (cada vez que PHP ejecuta las sentencias contenidas en el bucle es una iteracin). A veces, si la expresin while se evala como FALSE desde el principio, las sentencias anidadas no se ejecutarn ni siquiera una vez. Al igual que con la sentencia if, se pueden agrupar varias instrucciones dentro del mismo bucle while rodeando un grupo de sentencias con corchetes, o utilizando la sintaxis alternativa:
while (expresin): Sentencias ...

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 9


endwhile;

<?php /* ejemplo 1 */ $i = 1; while ($i <= 10) { echo $i++; /* el valor presenta (post-incremento) */ } ?>

o sera

$i antes del incremento

do-while
Los bucles do-while son muy similares a los bucles while, excepto que la expresin verdadera es verificada al final de cada iteracin en lugar que al principio. La diferencia principal con los bucles while es que est garantizado que corra la primera iteracin de un bucle do-while (la expresin verdadera slo es verificada al final de la iteracin), mientras que no necesariamente va a correr con un bucle while regular (la expresin verdadera es verificada al principio de cada iteracin, si se evala como FALSE justo desde el comienzo, la ejecucin del bucle terminara inmediatamente). Hay una sola sintaxis para bucles do-while:
<?php $i = 0; do { echo $i; } while ($i > 0); ?>

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 10

El bucle de arriba se ejecutara exactamente una sola vez, ya que despus de la primera iteracin, cuando la expresin verdadera es verificada, se evala como FALSE ($i no es mayor que 0) y termina la ejecucin del bucle.

for
Los bucles for son los ms complejos en PHP. Se comportan como sus homlogos en C. La sintaxis de un bucle for es:
for (expr1; expr2; expr3) Sentencia

La primera expresin (expr1) es evaluada (ejecutada) una vez incondicionalmente al comienzo del bucle. En el comienzo de cada iteracin, se evala expr2. Si se evala como TRUE, el bucle contina y se ejecutan la/sy sentencia/s anidada/s. Si se evala como FALSE, finaliza la ejecucin del bucle. Al final de cada iteracin, se evala (ejecuta) expr3. Cada una de las expresiones puede estar vaca o contener mltiples expresiones separadas por comas. En expr2, todas las expresiones separadas por una coma son evaluadas, pero el resultado se toma de la ltima parte. Que expr2 est vaca significa que el bucle debera ser corrido indefinidamente (PHP implcitamente lo considera como TRUE, como en C). Esto puede no ser tan intil como se pudiera pensar, ya que muchas veces
<?php /* ejemplo for ($i = 1; $i <= 10; $i++) { echo $i; }?>

*/

se debe terminar el bucle usando una sentencia condicional break en lugar de utilizar la expresin verdadera del for.

PHP tambin admite la sintaxis alternativa de los dos puntos para bucles for.
for (expr1; expr2; expr3): Sentencia ... endfor;

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 11

break
break termina la ejecucin de la estructura actual for, foreach, while, dowhile o switch. break acepta un argumento numrico opcional el cual indica de cuantas
<?php $arr = array('uno', 'dos', 'tres', 'cuatro', 'pare', 'cinco'); while (list(, $val) = each($arr)) { if ($val == 'pare') { break; /* Se puede tambin escribir 'break 1;' aqu. */ } echo "$val<br />\n"; }?>

estructuras anidadas encerradas se debe salir.

/* Usando el argumento opcional. */ $i = 0; while (++$i) { switch ($i) { case 5: echo "En 5<br />\n"; break 1; /* Slo sale del switch. */ case 10: echo "En 10; saliendo<br />\n"; break 2; /* Sale del switch y del while. */ default: break; } } ?>

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 12

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 13

Continue
Continue se utiliza dentro de las estructuras iterativas para saltar el resto de la iteracin actual del bucle y continuar la ejecucin en la evaluacin de la condicin, y luego comenzar la siguiente iteracin. Nota: Tenga en cuenta que en PHP la sentencia switch se considera una estructura iterativa para los propsitos de continue. continue acepta un argumento numrico opcional, que indica a cuntos niveles de bucles encerrados se ha de saltar al final. El valor por omisin es 1, por lo que salta al final del bucle actual.
<?php while (list($clave, $valor) = each($arr)) { if (!($clave % 2)) { // saltar los miembros impares continue; } hacer_algo($valor); } $i = 0; while ($i++ < 5) { echo "Exterior<br />\n"; while (1) { echo "Medio<br />\n"; while (1) { echo "Interior<br />\n"; continue 3; } echo "Esto nunca se imprimir.<br />\n"; } echo "Ni esto tampoco.<br />\n"; } ?>

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 14

Switch
La sentencia switch es similar a una serie de sentencias IF en la misma expresin. En muchas ocasiones, es posible que se quiera comparar la misma variable (o expresin) con muchos valores diferentes, y ejecutar una parte de cdigo distinta dependiendo de a que valor es igual. Para esto es exactamente la expresin switch. Cabe sealar que a diferencia de algunos otros lenguajes, la sentencia continue se aplica a switch y acta de manera similar a break. Si se tiene un switch dentro de un bucle y se desea continuar a la siguiente iteracin de del ciclo exterior, se utiliza continue 2. Los dos ejemplos siguientes son dos formas diferentes de escribir lo mismo, uno con una serie de sentencias if y elseif, y el otro usando la sentencia switch:

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 15


<?php if ($i == 0) { echo "i es igual a 0"; } elseif ($i == 1) { echo "i es igual a 1"; } elseif ($i == 2) { echo "i es igual a 2"; } switch ($i) { case 0: echo "i es igual a 0"; break; case 1: echo "i es igual a 1"; break; case 2: echo "i es igual a 2"; break; } ?>

<?php switch ($i) { case "manzana": echo "i es una manzana"; break; case "barra": echo "i es una barra"; break; case "pastel": echo "i es un pastel"; break; } ?>

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 16

Es importante entender cmo la sentencia switch es ejecutada con el fin de evitar errores. La sentencia switch ejecuta lnea por lnea (en realidad, sentencia por sentencia). Al principio, ningn cdigo es ejecutado. Slo cuando una sentencia case es encontrada con un valor que coincide con el valor de la sentencia switch, PHP comienza a ejecutar la sentencias. PHP contina ejecutando las sentencias hasta el final del bloque switch, o hasta la primera vez que vea una sentencia break. Si no se escribe una sentencia break al final de la lista de sentencias de un caso, PHP seguir ejecutando las sentencias del caso siguiente.

declare
El constructor declare es usado para fijar directivas de ejecucin para un bloque de cdigo. La sintaxis de declare es similar a la sintaxis de otros constructores de control de flujo:
declare (directive) statement

La seccin directive permite que el comportamiento de declare sea configurado. Actualmente, slo dos directivas estn reconocidas: ticks (Ver abajo para ms informacin sobre la directiva ticks) y encoding (Ver abajo para ms informacin sobre la directiva encoding ). La parte statement del bloque declare ser ejecutada - como se ejecuta y que efectos secundarios ocurran durante la ejecucin puede depender de la directiva fijada en el bloque directive. El constructor declare tambin se puede utilizar en el alcance global, afectando a todo el cdigo que le sigue (sin embargo, si el archivo con el declare fue incluido entonces no afectar al archivo padre).
<?php // estos son lo mismo: // se puede usar sto: declare(ticks=1) { // script entero aqu } // o se puede usar sto: declare(ticks=1); // script entero aqu ?>

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 17

Ticks
Un tick es un evento que ocurre para cada sentencia tickable N de bajo nivel ejecutada por el intrprete dentro del bloque declare. El valor para N se especifica usando ticks=N dentro del bloque de declare de la seccin directive. No todas las sentencias son tickable. Por lo general, expresiones de condicin y expresiones de argumento no son tickables. Los eventos que ocurren en cada tick se especifican mediante la register_tick_function(). Ver el ejemplo abajo para ms detalles. Tener en cuenta que ms de un evento puede ocurrir por cada tick.
<?php declare(ticks=1); // Una funcin llamada en cada evento tick function tick_handler() { echo "tick_handler() llamado\n"; } register_tick_function('tick_handler'); $a = 1; if ($a > 0) { $a += 2; print($a); } ?>

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 18

return
Si se llama desde una funcin, la sentencia return inmediatamente termina la ejecucin de la funcin actual, y devuelve su argumento como el valor de la llamada a la funcin. return tambin pondr fin a la ejecucin de una sentencia eval() o a un archivo de script. Si se llama desde el mbito global, entonces la ejecucin del script actual se termina. Si el archivo script actual fue incluido o requerido con include o require, entonces el control es pasado de regreso al archivo que hizo el llamado. Adems, si el archivo script actual fue incluido con include, entonces el valor dado a return ser retornado como el valor de la llamada include. Si return es llamado desde dentro del fichero del script principal, entonces termina la ejecucin del script. Si el archivo script actual fue nombrado por las opciones de configuracin auto_prepend_file o auto_append_file en php.ini, entonces se termina la ejecucin de ese archivo script.
<?php function } function $a['e'] } function c(){ if(is_array(a())){ echo 'a is }else{ 'a is NOT } if(is_array(b())){ echo 'b is }else{ 'b is NOT } return = return $a['e'] b(){ 'sometxt'; $a;

a(){ = 'sometxt';

array'; an array';

echo

array'; an array';

echo } ?>

Para ms informacin, ver Retornando valores.

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 19

require
require es idntico a include excepto que en caso de fallo producir un error fatal de nivel E_COMPILE_ERROR. En otras palabras, ste detiene el script mientras que include slo emitir una advertencia (E_WARNING) lo cual permite continuar el script.

<?php require('somefile.php'); ?> The <?php require ?> following: 'somefile.php';

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 20

Include
La sentencia include incluye y evala el archivo especificado. Los archivos son incluidos con base en la ruta de acceso dada o, si ninguna es dada, el include_path especificado. Si el archivo no se encuentra en el include_path, include finalmente verificar en el propio directorio del script que hace el llamado y en el directorio de trabajo actual, antes de fallar. El constructor include emitir una advertencia si no puede encontrar un archivo, ste es un comportamiento diferente al de require, el cual emitir un error fatal.
<?php $color = 'verde'; $fruta = 'manzana'; ?> test.php <?php echo "Una $fruta $color"; // Una include 'vars.php'; echo "Una $fruta $color"; // Una manzana verde ?>

require_once
La sentencia require_once es idntica a require excepto que PHP verificar si el archivo ya ha sido incluido y si es as, no se incluye (require) de nuevo. Ver la documentacin de include_once para informacin sobre comportamiento de _once, y como difiere de sus hermanos no _once. el

include_once
La sentencia include_once incluye y evala el fichero especificado durante la ejecucin del script. Es un comportamiento similar al de la sentencia include, siendo la nica diferencia que si el cdigo del fichero ya ha sido incluido, no se volver a incluir. Como su nombre lo indica, ser incluido slo una vez.

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 21 include_once puede ser usado en casos donde el mismo fichero podra ser incluido y evaluado ms de una vez durante una ejecucin particular de un script, as que en este caso, puede ayudar a evitar problemas como la
<?php include_once "a.php"; // esto incluir a.php include_once "A.php"; // esto incluir a.php otra vez! (slo PHP 4) ?>

redefinicin de funciones, reasignacin de valores de variables, etc.

goto
El operador goto puede ser usado para saltar a otra seccin en el programa. El punto de destino es especificado mediante una etiqueta seguida de dos puntos y la instruccin es dada como goto seguida de la etiqueta del destino deseado. Este goto no es completamente sin restricciones. La etiqueta de destino debe estar dentro del mismo fichero y contexto, lo que significa que no se puede saltar fuera de una funcin o mtodo, ni se puede saltar dentro de uno. Tampoco se puede saltar dentro de cualquier clase de estructura de
<?php for($i=0,$j=50; $i<100; $i++) { while($j--) { if($j==17) goto end; } } echo "i = $i"; end: echo 'j alcanz 17'; ?>

bucle o switch. Se puede saltar fuera de estos y un uso comn es utilizar un goto en lugar de un break multi-nivel.

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 22

Variables
En PHP las variables se representan con un signo de dlar seguido por el nombre de la variable. El nombre de la variable es sensible a minsculas y maysculas. Los nombres de variables siguen las mismas reglas que otras etiquetas en PHP. Un nombre de variable vlido tiene que empezar con una letra o un carcter de subrayado (underscore), seguido de cualquier nmero de letras, nmeros y caracteres de subrayado.

Variables Tiempo y Fecha


Estas dos funciones nos permitirn mostrar o capturar la fecha y hora, lo cual tiene una gran cantidad de aplicaciones. Por ejemplo, supn que tienes una tienda on-line y para cada operacin de venta tienes que registrar la fecha y hora de la venta. Estas funciones resultarn tiles para ello. La funcin time devuelve el momento actual medido como el nmero de segundos desde el 1 de Enero de 1970 00:00:00 GMT. Cuando hablamos de momento actual nos referimos a la hora actual del servidor. Hay que tener cuidado con esta circunstancia. Por ejemplo, si trabajas con un servidor localizado en Estados Unidos lo ms probable es que el servidor trabaje con la hora de Estados Unidos. Si quieres obtener la hora local de tu pas, tendrs que tenerlo en cuenta para restarle o sumarle cierto nmero de horas a la hora que te devuelva el servidor. Por otro lado, la funcin date muestra la fecha en formato d-m-Y (donde d representa da, m representa mes y Y representa ao) desde el valor de

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 23 time u otra fecha dada en segundos desde el 1 de Enero de 1970 00:00:00 GMT. En general, te recomendamos que hagas pruebas para comprobar que los resultados de fecha y hora obtenidos son los adecuados, ya que la configuracin de cada servidor es distinta. Ejemplo 1 <?php //Ejemplo funciones aprenderaprogramar.com $time = time(); echo date("d-m-Y (H:i:s)", $time); ?> bsicas

La funcin time() devuelve un valor numrico entero largo, por ejemplo 1335169779. Este nmero representa el nmero de segundos transcurridos desde el 1 de enero de 1970. Para transformar ese nmero en una fecha entendible por las personas usamos la funcin date, cuya sintaxis general es: date (formato de salida, valorTimeValido) En cuanto a equivalencias: formato de salida, disponemos de las siguientes

d: representa el da m: representa el mes Y: representa el ao H: representa la hora (dos dgitos)

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 24 i: representa los minutos (dos dgitos) s: representa los segundos (dos dgitos) En cuanto a valorTimeValido, ser un nmero, generalmente contenido en una variable. Ejemplo 2 <?php $time = time(); echo "<br/>"; echo $time; echo "<br/>"; echo date("d-m-Y (H:i:s)", -3600); echo "<br/>"; echo date("d-m-Y (H:i:s)", 0); echo "<br/>"; echo date("d-m-Y (H:i:s)", 3600); echo "<br/>"; echo date("Y-m-d (H:i:s)", $time); echo "<br/>"; echo date("Y-m-d ", $time); echo "<br/>"; echo ("Segn el servidor date("H:i:s", $time)); ?> la hora actual es: ".

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 25

Con este ejemplo podemos comprobar algunas cosas. En primer lugar, que la funcin time() devuelve un nmero, mientras que la funcin date devuelve un String o cadena de texto. En segundo lugar, que para obtener fechas anteriores al 1 de enero de 1970 podemos usar nmeros negativos. En tercer lugar, que el momento 0 que es el 01-01-1970 00:00:00 GMT, cuando es mostrado por un servidor concreto, es adaptado a su horario local. En el servidor del ejemplo, el horario local es GMT + 01:00, es decir, su hora es la hora GMT +01:00, por eso nos devuelve como hora cero la una de la maana del 1 de enero de 1970. No te preocupes si te resulta un poco confuso, simplemente ten en cuenta que debes hacer pruebas para ver cmo responde el servidor con el que ests trabajando. En cuarto lugar que podemos hacer que la fecha se muestre en el formato u orden que queramos, usando los trminos clave d, m, Y, H, i, s en el orden que queramos. En quinto lugar, que podemos concatenar cmo se muestra una fecha (o almacenarla en otra variable si quisiramos) concatenando el resultado de la funcin date con una cadena de texto cualquiera. Parmetros de formato de date() Devuelve valores de fecha y hora actuales utilizando los parmetros que se sealan en la tabla para establecer el formato de salida de los datos. Dentro de la misma cadena de formato puede contener tantos parmetros como se deseen. Parmetros de formato de date() Valo Funcionalidad Sintaxis Resultado

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 26 r A A D J F M M N Y Y G H G H I S L D W Z T L AM-PM am-pm date("A PM ") date("a pm ")

Da del mes en formato de 2 date("d 02 dgitos ") da del mes sin ceros a la date("j" 2 izquierda ) Nombre completo) del mes (texto date("F May ") date("M May ") 05

Nombre del mes (3 letras)

N del mes (de 01 a 12) con date(" dos dgitos m")

N del mes (de 1 a 12) sin date("n 5 dos dgitos ") Ao con cuatro dgitos Ao con dos dgitos Hora 0-23 izquierda date("Y 2013 ") date("y 13 ")

sin ceros a la date("G 19 ") date("H 19 ")

Hora 0-23 con dos dgitos Hora 1-12 izquierda

sin ceros a la date("g 7 ") date("h 07 ")

Hora 01-12 con dos dgitos

Minutos de 00 a 59 con dos date("i" 09 dgitos ) Segundos de 00 a 59 con dos date("s 17 dgitos ") da semana completo Da de letras) la en semana texto date("l" Thursday ) (tres date("D Thu ")

da semana de 0 (domingo) a date("w 4 6 (sabado) ") das transcurridos del ao date("z 121 actual ") Nmero de das mes actual date("t" 31 )

Ao actual bisiesto (1), no date("L 0

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 27 bisiesto (0) Z U S Diferencia (seg.) local con GMT Segundos Unix Epoch Sufijo ordinal ingls ") horaria date("Z 7200 ") date("U 1367514 ") 557 date("S nd ")

Como puedes ver en este ejemplo, respeta los caracteres separadores (espacios, dos puntos, guiones, etctera) que se hubieran incluido en la cadena de formato siempre que no coincidan con ninguno de los parmetros PHP para esta cadena. Ejemplo 3

<?php echo "Son las ", date("h : i : s")," y hoy es ", date("j-F-Y") ?> Validar una fecha - checkdate Para validar una fecha se utiliza la funcin checkdate ( $mes, $dia, $anio) el valor que devuelve puede ser verdadero o falso. Devuelve VERDADERO si los valores corresponden a una fecha correcta y FALSO en el caso de que no ocurra as. Ejemplos de checkdate() Mes Da Ao Sintaxis 10 10 2 2 32 1987 Checkdate(10,32,1987) 31 1987 Checkdate(10,31,1987) 1 29 2000 Checkdate(2,29,2000) 29 2001 Checkdate(2,29,2001) 1 Devuelve

gettimeofday() Esta funcin devuelve un array asociativo con los siguientes ndices: sec El valor asociado a este ndice del array recoge la hora actual (Unix Each) expresada en segundos usec El valor asociado a usec recoge la fraccin en microsegundos de hora actual (Unix Each)

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 28 minuteswest Devuelve los minutos al Oeste de Greenwich dsttime Devuelve el tipo de correccin horaria segn horarios de verano/invierno. El valor UNO corresponde a horario de verano, el valor CERO al de invierno y MENOS UNO en el caso en que sea desconocido. Ejemplos de gettimeofday() Sintaxis Devuelve $z= gettimeofday(); Array echo $z; echo $z['sec']; echo $z[usec]; 136751455 7 826013

echo -120 $z['minuteswest'']; echo $z['dsttime']; 1

Getdate() Devuelve un array asociativo con parmetros de la fecha actual. Los ndices de este array y sus valores son los que puedes ver en la tabla. Ejemplos de getdate() Funcionalidad Devuelve un array asociativo Sintaxis $s=getdate(); echo $s; Devuelve Array 17 9 19

Este ndice devuelve los segundos de la echo hora actual $s['seconds'] Este ndice devuelve los minutos de la hora echo actual $s['minutes'] Este ndice devuelve la hora de la hora echo actual $s['hours'] Este ndice devuelve el da del mes actual

echo $s['mday'] 2

Este ndice devuelve el n del da de la echo $s['wday'] 4 semana

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 29 Este ndice devuelve el n del mes Este ndice devuelve el ao echo $s['mon'] 5 echo $s[year] 2013

Este ndice devuelve n del da en el ao echo $s['yday'] 121 actual Este ndice devuelve el da de la semana Este ndice devuelve el nombre del mes echo $s['weekday'] echo $s['month'] Thursda y May

getdate(nmero) Interpreta el nmero como una fecha Unix Each (segundos transcurridos desde el da 1 de Enero de 1970) y devuelve un array asociativo con los valores relativos a esa fecha. Los ndices de este array y sus valores son idnticos a los de getdate() tal como puedes ver en esta tabla. Ejemplos de getdate(nmero) Funcionalidad Devuelve un array asociativo Sintaxis Devuelv e

$s=getdate(1276 48); Array echo $s; 28 27 12 2 5 1 1970 1 Friday

Este ndice devuelve los segundos de la echo hora actual $s['seconds'] Este ndice devuelve los minutos de la hora echo actual $s['minutes'] Este ndice devuelve la hora de la hora echo $s['hours'] actual Este ndice devuelve el da del mes actual echo $s['mday'] Este ndice devuelve el n del da de la echo $s['wday'] semana Este ndice devuelve el n del mes Este ndice devuelve el ao echo $s['mon'] echo $s['year']

Este ndice devuelve n del da en el ao echo $s['yday'] actual Este ndice devuelve el da de la semana Este ndice devuelve el nombre del mes echo $s['weekday']

echo $s['month'] January

time() Esta funcin devuelve la hora actual en segundos expresada en tiempo Unix. <?php

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 30 print "Han transcurrido ".time(). " segundos desde las cero horas del da 0101-1970"; ?> Devolvera: Han transcurrido 1367514557 segundos desde desde las cero horas del da 01-01-1970 microtime() Esta funcin devuelve una cadena formada la fraccin de microsegundos de la hora actual expresada en tiempo Unix seguida de un espacio y de los segundos del tiempo Unix. <?php print "Estamos en la fraccin ".microtime(). " de segundo de la hora actual"; ?> Devolvera: Estamos en la fraccin 0.82605800 1367514557 de segundo de la hora actual mktime (hora, minuto, segundo, mes, da, ao) Devuelve el tiempo Unix de la fecha pasada como parmetro a la funcin. Es fundamental mantener la secuencia de los datos. Si se omiten argumentos (slo pueden omitirse por la derecha) tomar los de la fecha actual. Cuando el parmetro da es cero devuelve el ltimo da del mes anterior, pero si pasamos cero como parmetro de mes nos dar un error. Ejemplos de mktime() H Min Se Tiempo Mes Da Ao c Unix 16 16 16 16 Fecha 16-Jun16-Jun17-Jun17-Jun16-Feb31-Jan-

23 12 57 6 23 12 57 6 25 12 57 6 23 97 57 6

197 10911677 23:12:57 3 7 1973 197 10911677 23:12:57 3 7 1973 197 10912397 01:12:57 3 7 1973 197 10912187 00:37:57 3 7 1973 197 13028477 23:12:57 3 7 1974 197 12890237 23:12:57 3 7 1974

23 12 57 14 16 23 12 57 14 0

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 31 En los ejemplos de esta tabla puede verse cmo para valores fuera de rango (mes mayor de 12, minutos mayor de 60, etctera) la funcin realiza la correccin correspondiente.

Ejercicios
IF
Ejemplo 1
<html> <body> <?php $a=1; $b=1; if($a==$b) { echo "$a es igual a $b"; } else { echo "$a no es igual a $b"; } ?> </body> </html>

Ejemplo 2
<html> <body> <?php $x = 0; if ( isset($x) ) { echo "La variable si existe."; } else { echo "La variable no existe."; } ?> </body> </html>

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 32

Ejemplo 3
<html> <body> <?php $cadena = 'XY'; if ( eregi('z', $cadena) ) { echo "'$cadena' Contiene una 'z' o 'Z'!"; } else { echo "'$cadena' NO contiene una 'z' o 'Z'!"; } ?> </body> </html>

If - elseif
Ejemplo 1
<html> <body> <?php

$a=2; $b=1; if ($a > $b) { echo "a es mayor que b"; } elseif ($a == $b) { echo "a es igual que b"; } else { echo "a es menor que b"; } ?> </body> </html>

Ejercicio 1
<html> <body> <?php

//Utilizando la estructura if/elseif Comprobar si un numero se encuentra en los siguientes rangos: //Mayor o igual que 40

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 33 //Entre 35 y 39 //Entre 30 y 34 //Menor que 30 $test = 39; if ($test >= 40) { echo "$test es mayor o igual que 40."; } elseif ($test >= 35) { echo "$test se encuentra entre 35 y 39."; } elseif ($test >= 30) { echo "$test se encuentra entre 30 y 34."; } else { echo "$test es menor que 30."; } ?> </body> </html>

While
Ejemplo 1
<html> <body> <?php $x=1; while($x<=10) { echo "$x<br />\n"; $x++; } ?> </body> </html>

Ejemplo 2

<html> <body> <?php //Determinar que numeros son pares o impares $numero = 15; $pares = 0; $impares = 0; while ( $numero > 0) { if ( $numero % 2 == 0 ) { echo "El $numero es un numero PAR <br> "; $pares++; }

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 34 else { echo "El $numero es un numero IMPAR <br>"; $impares++; } $numero--; } echo "En total se han contado <strong>$pares numeros pares</strong> y <strong>$impares impares</strong>"; ?> </body> </html>

Ejemplo 3
<html> <body> <?php

$precio = 5; $cantidad = 10; echo "<table border=\"1\" align=\"center\">"; echo "<tr><th>Cantidad</th>"; echo "<th>Precio</th></tr>"; while ( $cantidad <= 100 ) { echo "<tr><td>"; echo $cantidad; echo "</td><td>"; echo $precio * $cantidad; echo "</td></tr>"; $cantidad = $cantidad + 10; } echo "</table>"; ?> </body> </html>

DO-WHILE
Ejemplo 1
<html> <body> <?php $c =0; do { echo "$c<br />\n"; $c++; }

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 35 while ($c<=10); ?> </body> </html>

Ejemplo 2
<html> <body> <?php

$a=5; $suma=0; do{ echo "$a<br/>\n"; $suma=$suma+$a; $a--; }while($a>0); echo "El total de la suma es $suma"; ?> </body> </html>

Ejercicio 1
<html> <body> <?php

//Utilizando DO-WHILE Mostrar los multiplos de 3 del 0 al 30 $a =0; do{ $a=$a+3; //$a+=3 echo "$a<br/>\n"; }while($a<30); ?> </body> </html>

For
Ejemplo 1
<html> <body> <?php

$x =array("UNO","DOS","TRES","CUANTRO");

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 36

for($i=0;$i<3;$i++) { echo "$x[$i]<br/>\n"; } ?> </body> </html>

Ejemplo 2
<html> <body> <?php

$x =array(array("UNO","DOS"),array("TRES","CUATRO")); for($i=0;$i<2;$i++) { for($j=0;$j<2;$j++) { echo $x[$i][$j]; echo " <br/>\n"; } } var_dump($x); ?> </body> </html>

Ejercicio 1
<html> <body> <?php

//Mostrar la tabla de multiplicar del 2. Utilizando WHILE, DO-WHILE y FOR $a=2; $contador1=1; while($contador1<=12) { echo "$a X $contador1 ="; echo $contador1*$a; echo "<br />\n"; $contador1++; } echo "<br />\n";

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 37 $b=2; $contador2=1; do{ echo "$b X $contador2 ="; echo $contador2*$b; echo "<br />\n"; $contador2++; }while($contador2<=12); echo "<br />\n"; $c=2; for($contador3=1; $contador3<=12; $contador3++) { echo "$c X $contador3 ="; echo $contador3*$c; echo "<br />\n"; } ?> </body> </html>

Continue
Ejemplo 1
<?php for ($i=0; $i<50; $i++) { if(($i%4)==0)//si es divisible para 4 { continue; //Sentencia Continue } echo $i . "<br>"; } ?>

Switch
Ejemplo 1
<?php $var=10; switch($var) { case 0: echo "La variable es cero"; break; case 1: echo "Es 1"; break; case 2: echo "Es 2"; break;

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 38 case 3: echo "Es 3"; break; default: echo "No es ninguno de los casos"; } ?>

Declare
Ejemplo 1
<?php function mifuncion() { print "In tick func\n"; } register_tick_function("mifuncion"); declare(ticks=10) { for($i = 0; $i < 20; $i++) { print "Hola\n"; } } declare(ticks=4) { for($i = 0; $i < 20; $i++) { print "Hola\n"; } } ?>

Time
Ejemplo 1
<?php $semana_sig = time() + (7 * 24 * 60 * 60); // 7 das; 24 horas; 60 minutos; 60 segundos echo 'Ahora: '. date('Y-m-d') ."\n"; echo 'Semana Siguiente: '. date('Y-m-d', $semana_sig) ."\n"; // o usar strtotime(): echo 'Semana Siguiente: '. date('Y-m-d', strtotime('+1 week')) ."\n"; ?>

Microtime
Ejemplo 1
<?php /** * Funcin sencilla para repetir el comportamiento de PHP 5 */ function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); }

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 39 $time_start = microtime_float(); // Dormir por un momento usleep(100); $time_end = microtime_float(); $time = $time_end - $time_start; echo "No se hizo nada en $time segundos\n"; ?>

Include include_once
index.php

<?php include 'datos.php'; include_once 'datos.php'; echo "continua...."; ?>

datos.php

<?php echo "Incluir datos con include <br/>"; ?>

Ejercicio de require require_once


index.php

<?php require 'datos.php'; require_once 'datos.php'; echo "continua...."; ?>

datos.php

<?php echo "Incluir datos con require <br/>"; ?>

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 40

Combinar include con require_once y viceversa.


index.php

<?php include 'datos.php'; require_once 'datos.php'; echo "continua...."; ?>

index.php

<?php require 'datos.php'; include_once 'datos.php'; echo "continua...."; ?>

Goto
Saltar a otra lnea de cdigo
<?php goto a; echo hola mundo'; a: echo hello world'; ?>

Salir de un bucle con goto


<?php $i=0; $j=0; for($i=0;$i<=20;$i++){ echo "$i <br/> "; if ($i==10) goto fin; } fin: echo "-- la variable i llego a 10"

Programacin Avanzada Sentencias de control y Variables de Tiempo y fecha 41 ?>

Conclusiones
Hemos estudiado los conceptos bsicos de sentencias de control y variables de tiempo y fecha en php. Se ha comprendido la estructura bsica de sentencias de control. Se ha entendido el funcionamiento de las variables de tiempo y fecha en php. Se han realizado ejercicios de aplicacin para mejor entendimiento.

Bibliografas
http://www.rinconastur.com/php/php66.php http://www.mclibre.org/consultar/php/lecciones/php_fecha_hora.html http://php.net/manual/es/language.control-structures.php http://www.openalfa.com/index.php/php/sentencias-control http://www.aulaclic.es/paginas-web/a_11_2_2.htm http://mmc.geofisica.unam.mx/LuCAS/ManualesLuCAS/manual_PHP/manual_PHP/sintaxis/sentencias_control.htm

Das könnte Ihnen auch gefallen