Beruflich Dokumente
Kultur Dokumente
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
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.
Temtica
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.
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"; } ?>
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:
$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.
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; ?>
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 ...
<?php /* ejemplo 1 */ $i = 1; while ($i <= 10) { echo $i++; /* el valor presenta (post-incremento) */ } ?>
o sera
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); ?>
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;
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"; }?>
/* 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; } } ?>
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"; } ?>
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:
<?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; } ?>
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 ?>
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); } ?>
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 } ?>
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.
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) ?>
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.
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.
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
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: ".
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
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 ")
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 )
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
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
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
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']
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>
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");
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
datos.php
datos.php
index.php
Goto
Saltar a otra lnea de cdigo
<?php goto a; echo hola mundo'; a: echo hello world'; ?>
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