PHP PHP HiperText Preprocesor 1 Tipos : Cadenas ● Cadenas : Acceso a caracteres – Indices [ 0 .. longitud_cadena -1] <?php $cadena = “esto es una prueba”; echo $cadena; esto es una prueba echo $cadena[0]; // Imprime el primer caracter e echo $cadena[6]; // Imprime el 7 caracter s $cadena[0]='E'; echo $cadena; Esto es una prueba ?> 47 Variables predefinidas ● Variables del servidor – $_SERVER PHP_SELF ● SERVER_ADDR ● SERVER_ADDR ● DOCUMENT_ROOT ● QUERY_STRING ● REMOTE_ADDR ● HTTP_HOST ● ... ● [http://es2.php.net/reserved.variables] 65 Constantes ● Definición de constantes – define($nombre,$valor) – $nombre (string) : nombre de la constante – $valor : Valor de la constante <?php define("const1","primera constante"); define("MAX",10); echo MAX; 10 echo const1 primera constante ?> 66 Estructuras de control ● Controlar la ejecución de instrucciones ● Decidir en tiempo de ejecución que sentencias ejecutar u omitir ● Crear bloques repetitivos ● En tiempo de ejecución / contexto 67 Estructuras de control : IF ● Permite la ejecución condicional de sentencias ● Si la condición se cumple en tiempo de ejecución : se ejecuta un bloque de código predeterminado <?php if (expr) sentencia ?> ● Las tabulaciones no son necesarias pero si recomendables para la legibilidad el código 68 Estructuras de control : IF ● expr : “cualquier cosa que tiene un valor” <?php $a = 5; ?> – Los literales son expresiones – – '5' es una expresión con el valor 5 Las variables son expresiones – $a es una expresión con el valor 5 69 Estructuras de control : IF ● expr : “cualquier cosa que tiene un valor” – Las comparaciones son una expresion con valores booleanos (true o false ) (verdadero o falso) <?php $a = 10; if ( $a > 0 ) echo “a es mayor que cero”; ?> – $a > 0 es una expresión con valor TRUE 70 Estructuras de control : IF ● expr se evalúa a su valor condicional (boolean) – Si la expresión se evalúa como true se ejecuta la sentencia – Si la expresión se evalúa como false no se ejecuta la sentencia <?php $a = 10; if ($a > 0) print "a es mayor que 0"; if ($a) print “a es diferente a 0”; ?> 71 Operadores de comparación ● Operadores Operacion Nombre $a == $b $a === $b $a != $b Igual Idéntico Diferente $a <> $b $a !== $b Diferente No idénticos $a < $b $a > $b $a <= $b $a >= $b Resultados TRUE si $a es igual a $b. TRUE si $a es igual a $b, y son del mismo tipo. TRUE si $a no es igual a $b. TRUE si $a no es igual a $b. TRUE si $a no es igual a $b.TRUE si $a no es igual a $b, o si no son del mismo tipo. TRUE si $a es escrictamente menor que $b. Menor que TRUE si $a es estrictamente mayor que $b. Mayor que Menor o igual que TRUE si $a es menor o igual que $b. Mayor o igual que TRUE si $a es mayor o igual que $b. 72 Operadores de comparación ● Las expresiones de comparación siempre devuelven un valor boolean <?php $a = 5; $b = 0; $c = "0"; var_dump($a>$b); var_dump($a<$b); var_dump($a>$c); var_dump($b==$c); var_dump($b===$c); var_dump($b!=$c); var_dump($b!==$c); var_dump($b<>$c); var_dump($a>=$b); ?> //bool(true) //bool(false) //bool(true) //bool(true) //bool(false) //bool(false) //bool(true) //bool(false) //bool(true) 73 Estructuras de control : IF ● Comparación <?php $a = 5; $c = "0"; if($a>0) echo “a es mayor que cero”; if($c==0) echo “c es igual a cero” if($_SERVER['HTTP_USER_AGENT']=='MSIE') echo “<link rel='stylesheet' type='text/css'” .“href='style_ie.css'/> if ($_SERVER['HTTP_USER_AGENT']=='Firefox') echo “<link rel='stylesheet' type='text/css'” .”href='style_firefox.css'/>”; ?> 74 Estructuras de control : IF ● If : Bloques – Podemos agrupar bloque de instrucciones mediante { } <?php if ($usuario != null ) { echo “<span class='datos'>$nombre</span>”; echo “<span class='datos'>$apellido</span>”; echo “<span class='datos'>$telefono</span>”; } ?> 75 Estructuras de control : IF ● If : Anidar condiciones – Podemos anidar indefinidamente condiciones <?php if ($usuario != null ) { echo “<span class='datos'>$nombre</span>”; echo “<span class='datos'>$apellido</span>”; echo “<span class='datos'>$telefono</span>”; if($telefono2 != null){ echo “<span class='datos'>$telefono2</span>”; } } ?> 76 Estructuras de control : IF ● If : Condiciones de múltiples expresiones – Operadores lógicos <?php if ( $edad < 18 ) { ... } if ( $edad >= 18 and $edad <=35 ){ ... } if ( $edad > 35 and $edad <= 60){ ... } //Solo si se cumplen // las dos condiciones //Solo si se cumplen // las dos condiciones ?> 77 Estructuras de control : IF ● If : Condiciones de múltiples expresiones <?php if ( $annos<18 or ($annos == 18 and $mesNacimiento < $mesActual)) { ... } if ( $result!=null and ($numResult > 100 or $pagina=0)){ ... } ?> 78 Estructuras de control : IF ... ELSE ● else : Ejecutar sentencias en caso de que la expresión evaluada en el if sea igual a false <?php echo “<link rel='stylesheet' type='text/css'”; if ($_SERVER['HTTP_USER_AGENT']=='MSIE' ) { echo “ href='style_explorer.css'/>”; } else{ echo “ href='style_firefox.css'/>”; } ?> 79 Estructuras de control : ELSEIF ● elseif : combinación if y else – Se ejecuta si if = false y se da otra condición nueva <?php echo “<link rel='stylesheet' type='text/css'”; if ($_SERVER['HTTP_USER_AGENT']=='MSIE' ) { echo “ href='style_explorer.css'/>”; } elseif ($_SERVER['HTTP_USER_AGENT']=='SAFARI'){ echo “ href='style_safari.css'/>”; } else{ echo “ href='style_firefox.css'/>”; } ?> 80 Estructuras de control : ELSEIF ● elseif : No hay limite de sentencias elseif – Solo una se ejecuta <?php if ($opcion==1 ) { ... } elseif ($opcion==2){ //Si se da la condición, se ejecuta ... //el bloque y se sale de la estructura } elseif ($opcion==3){ ... } else{ //Si no se da ninguna condición anterior ... //Se ejecuta el bloque else } ?> 81 Estructuras de control : SWITCH ● switch : Comparar la misma variable – Similar a bloque if – elseif – else ( != 1 variable) <?php switch ($i) { case 0: echo "i = 0"; break; case 1: echo "i = 1"; break; case 2: echo "i = 2"; break; } ?> 82 Estructuras de control : SWITCH ● switch : sentencia break – Las sentencias se empiezan a ejecutar desde una sentencia case que se cumpla hasta el final del switch o hasta una sentencia break <?php $i=1; switch ($i) { case 0: echo "i = 0"; break; case 1: echo "i = 1"; break; case 2: echo "i = 2"; break; } ?> i=1 <?php $i=1; switch ($i) case 0: echo case 1: echo case 2: echo } ?> { "i = 0"; "i = 1"; "i = 2"; i=1i=2 83 Estructuras de control : SWITCH ● switch : caso default – ~ else : En caso de que no se cumpla ningún 'case' <?php $i=1; switch ($i) { case 0: echo "i = 0"; break; case 1: echo "i = 1"; break; case 2: echo "i = 2"; break; default: ... } ?> 84 Estructuras de control : Bucles ● Estructuras repetitivas ● El código se ejecuta mientras se de una condición ● Diferentes tipos de bucles ● Diferentes sentencias 85 Estructuras de control : Bucles ● while – Tipo mas simple – while (expr) sentencia – Si la condición nunca obtiene el valor false ● – Bucle infinito !!! Múltiples sentencias : { } <?php $i=0; while($i<10){ echo $i; $i=$i+1; } ?> 86 Estructuras de control : Bucles ● while <?php $valorMax=10; $valorMin=1; $aux=$valorMin; while( $aux <= $valorMax ){ echo “<input type='radio' name='vota' value='$aux'/>$aux\n”; $aux=$aux+1; } $cont=0; while(!empty($imagenes[$cont])){ echo “<img src='{$imagenes[$cont]}'/>”; $cont++; } ?> 87 Estructuras de control : Bucles ● do .. while – Similar a while : La condición se evalúa al final <?php $i = 0; do { print $i; } while ($i>0); ?> 88 Estructuras de control : Bucles ● For – for (expr1 ; expr2 ; expr3 ) sentencia ● ● expr1 : Se ejecuta una sola vez al comienzo del bucle expr2 : Se evalúa en el comienzo de cada iteración – – ● true : el bucle continua ejecutándose false : termina la ejecución del bucle expr3 : Se ejecuta al final de cada iteración <?php for ($i=1;$i<=10;$i++){ echo “<input type='radio' name='vota' value='$i'/>$i\n”; } ?> 89 Estructuras de control : Bucles ● For <?php echo “<table”>; for ($i=0;$i<$maxUsuarios;$i++){ echo “<tr>”; echo “<td>{$usuario[$i]['nombre']}</td>”; echo “<td>{$usuario[$i]['apellido']}</td>”; echo “<td>{$usuario[$i]['dni']}</td>”; echo “</tr>”; } echo “</table>”; ?>