Logo Studenta

Estructuras básicas PHP

¡Este material tiene más páginas!

Vista previa del material en texto

Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
Tipos de variables en PHP 
A continuación pongo una lista de los posibles tipos de variables que hay en PHP. 
 Booleanos 
 Enteros 
 Float 
 String 
 Arrays 
 Iterables 
 Objects 
 Resources 
 Null 
booleanos 
Un tipo de variable booleano puede tener valor true(verdadero) o false(falso) 
<?php 
 $bool1 = true; //bool1 es una variable de tipo booleano con valor true 
 $bool2 = false;// $bool2 es una variable de tipo booleano con valor false 
?> 
 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
 
Enteros 
Un entero es un número que pertenece a el conjunto ℤ = {…, -2, -1, 0, 1, 2, …}. 
ejemplos de declaración: 
<?php 
 $entero = 42; 
 echo $entero; 
 $entero = 01; 
 echo $entero; 
 $entero = 0x22; 
 echo $entero; 
 $entero = 0b11;// si mal no me salen las cuentas esto es 3 
 ?> 
Flotante( float / double ) 
Los números flotantes puede ser cualquier tipo de número, son los números 
pertenecientes a el conjunto de los números reales.Ejemplo 2,3, 3,33333. 
String 
Son todas las variables de tipo texto, serie de caracteres de 256 bytes. Desde PHP 
7.0 la serie de caracteres puede ser de más de 256 bytes y no parece haber una 
restricción que moleste 
<?php 
 echo 'echo'; 
 echo "ejemplo con comillas dobles"; 
?> 
 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
 
Variable de tipo Array 
No se si realmente puedo poner como array a el tipo de variable ya que es de tipo 
ordered map. 
Los ordered maps asocian variables con palabras clave(key). Digamos asocio a con el 
valor b. 
Un array puede contener otro array, arboles e incluso arrays multi-dimensionales. 
<Ver más> 
<?php 
 $a = array( 
 "foo" => "bar", 
 "bar" => "foo" 
 ); 
?> 
echo $a['foo'];// devolvera bar 
echo $a['bar'];//devolvera foo 
Iterables 
Desde PHP 7.1 existe el tipo de variable iterable, está acepta un array o un objeto 
que este implementando la interfaz Traversable. Esta interfaz detecta si una clase 
puede recorrerse mediante foreach. 
Puede ser usado con yeld form dentro de un generator 
uso: 
Puede ser usado como parámetro en una función en caso de no ser iterable lanzara 
un error TypeError. 
<?php 
 
function foo(iterable $iterable) { 
 foreach ($iterable as $value) { 
 // ... 
 } 
} 
 
?> 
 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
 
Objetos 
A mí me gusta ver las clases como si fueran los planos de una casa y el objeto la casa 
en si que obtenemos al usar ese plano. 
Veamos mejor lo que es un objeto a través de la definición de Wikipedia. 
Un objeto en POO representa alguna entidad de la vida real, es decir, alguno de los 
objetos que pertenecen al negocio con que estamos trabajando o al problema con el 
que nos estamos enfrentando, y con los que podemos interactuar. 
A través del estudio de ellos se adquiere el conocimiento necesario para, mediante 
la abstracción y la generalización, agruparlos según sus características en conjuntos. 
Estos conjuntos determinan las clases de objetos con las que estamos trabajando. 
Hagamos un objeto casa tal como el ejemplo del inicio. 
A las funciones dentro del objeto se le llama métodos. 
<?php 
class Casa 
{ 
 private $ventanas = 5; 
 private $puertas = 3; 
 
 function mostrar() 
 { 
 echo "tengo una casa con $this->ventanas ventanas y $this->puertas puertas"; 
 } 
 public function setVentanas($nro){ 
 $this->vetanas = $nro; 
 } 
 public function setPuertas($nro){ 
 $this->puertas = $nro; 
 } 
} 
 
$miCasa= new Casa; 
$miCasa->mostrar(); 
// puede usar las funciones setVentana y setPuertas para setear la cantidad de 
ventanas y puertas 
?> 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
 
Conversión(cast) de tipo 
Podemos convertir a un tipo en específico o forzar a que sea de un tipo en específico 
con los ( ). 
 
(int), (integer) – cast a entero 
(bool), (boolean) – cast a booleano 
(float), (double), (real) – cast a punto flotante o nro real 
(string) – cast a string 
(array) – cast a array 
(object) – cast a objeto 
(unset) – cast a NULL 
 
Ejemplo Nombre Resultado 
+$a Identidad Conversión de $a a int o float según el caso. 
-$a Negación Opuesto de $a. 
$a + $b Adición Suma de $a y $b. 
$a - $b Sustracción Diferencia de $a y $b. 
$a * $b Multiplicación Producto de $a y $b. 
$a / $b División Cociente de $a y $b. 
$a % $b Módulo Resto de $a dividido por $b. 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
$a ** 
$b 
Exponenciación Resultado de elevar $a a la potencia $bésima. 
Introducido en PHP 5.6. 
El operador de división ("/") devuelve un valor flotante a menos que los dos 
operandos sean integers (o strings que se conviertan a integers) y los números sean 
divisibles, en cuyo caso será devuelto un valor integer. 
Los operandos del módulo se convierten en integers (por extracción de la parte 
decimal) antes del procesamiento. 
El resultado del operador módulo % tiene el mismo signo que el dividendo — es 
decir, el resultado de $a % $b tendrá el mismo signo que $a. Por ejemplo: 
<?php 
echo (5 % 3)."\n"; // muestra 2 
echo (5 % -3)."\n"; // muestra 2 
echo (-5 % 3)."\n"; // muestra -2 
echo (-5 % -3)."\n"; // muestra -2 
?> 
Operadores lógicos ¶ 
Ejemplo Nombre Resultado 
$a and $b And (y) true si tanto $a como $b son true. 
$a or $b Or (o inclusivo) true si cualquiera de $a o $b es true. 
$a xor $b Xor (o exclusivo) true si $a o $b es true, pero no ambos. 
! $a Not (no) true si $a no es true. 
$a && $b And (y) true si tanto $a como $b son true. 
$a || $b Or (o inclusivo) true si cualquiera de $a o $b es true. 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
La razón para tener las dos variaciones diferentes de los operadores "and" y "or" es 
que ellos operan con precedencias diferentes. (Ver Precedencia de operadores.) 
Ejemplo #1 Los operadores lógicos ilustrados 
<?php 
 
// -------------------- 
// foo() nunca será llamado ya que los operadores están en cortocircuito 
 
$a = (false && foo()); 
$b = (true || foo()); 
$c = (false and foo()); 
$d = (true or foo()); 
 
// -------------------- 
// "||" tiene una precedencia mayor que "or" 
 
// El resultado de la expresión (false || true) es asignado a $e 
// Actúa como: ($e = (false || true)) 
$e = false || true; 
 
// La constante false es asignada a $f antes de que suceda la operación "or" 
// Actúa como: (($f = false) or true) 
$f = false or true; 
 
var_dump($e, $f); 
 
// -------------------- 
// "&&" tiene una precedencia mayor que "and" 
 
// El resultado de la expresión (true && false) es asignado a $g 
// Actúa como: ($g = (true && false)) 
$g = true && false; 
 
// La constante true es asignada a $h antes de que suceda la operación "and" 
// Actúa como: (($h = true) and false) 
$h = true and false; 
 
var_dump($g, $h); 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
?> 
El resultado del ejemplo sería algo similar a: 
bool(true) 
bool(false) 
bool(false) 
bool(true) 
echo 
(PHP 4, PHP 5, PHP 7, PHP 8) 
echo — Muestra una o más cadenas 
Descripción 
echo(string $arg1, string $... = ?): void 
Muestra todos los parámetros. No se pospone ningua nueva línea adicional. 
echo no es realmente una función (es una construcción del lenguaje), por lo que no 
se requiere el uso de paréntesis con él. echo (a diferencia de otras construcciones 
del lenguaje) no se comporta como una función, es decir no siempre se puede usar 
en el contexto de una función. Además, si se quiere pasar más de un parámetro a 
echo, éstos no deben estar entre paréntesis. 
echo también posee una sintaxis abreviada, donde se puede poner el símbolo igual 
justo después de la etiqueta de apertura de PHP. Antes de PHP 5.4.0, este tipo de 
sintaxis abreviada únicamente funcionacon la opción de configuración 
short_open_tag activada. 
I have <?=$foo?> foo. 
Parámetros 
arg1 
El parámetro a mostrar. 
... 
Valores devueltos 
No devuelve ningún valor. 
Ejemplos 
Ejemplo #1 Ejemplos de echo 
<?php 
echo "Hola mundo"; 
 
echo "Esto abarca 
multiple líneas. Los saltos de línea también 
se mostrarán"; 
 
echo "Esto abarca\nmúltiples líneas. Los saltos de línea también\nse mostrarán."; 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
 
echo "Para escapar caracteres se hace \"así\"."; 
 
// Se pueden usar variables dentro de una sentencia echo 
$foo = "foobar"; 
$bar = "barbaz"; 
 
echo "foo es $foo"; // foo es foobar 
 
// También se pueden usar arrays 
$baz = array("valor" => "foo"); 
 
echo "Esto es {$baz['valor']} !"; // Esto es foo ! 
 
// Si se utilizan comillas simples, se mostrará el nombre de la variable, no su valor 
echo 'foo es $foo'; // foo es $foo 
 
// Si no usan otros caracteres, se puede utilizar echo para mostrar el valor de las 
variables. 
echo $foo; // foobar 
echo $foo,$bar; // foobarbarbaz 
 
// Las cadenas pueden ser pasadas individualmente como varios argumentos o 
// concatenadas como un único argumento 
echo 'Esta ', 'cadena ', 'está ', 'hecha ', 'con múltiple parámetros.', chr(10); 
echo 'Esta ' . 'cadena ' . 'está ' . 'hecha ' . 'con concatenación.' . "\n"; 
 
echo <<<END 
Aquí se utiliza la sintaxis de "here document" para mostrar 
múltiples líneas con interpolación de $variable. Nótese 
que el finalizador de here document debe aparecer en una 
línea con solamente un punto y coma. ¡Nada de espacios extra! 
END; 
 
// Ya que echo no se comporta como una función, el siguiente código no es válido. 
($variable) ? echo 'true' : echo 'false'; 
 
// Sin embargo, el siguiente código funcionará: 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
($variable) ? print 'true' : print 'false'; // print también es una construcción, pero 
// se comporta como una función, por lo que 
// puede usarse en este contexto. 
echo $variable ? 'true': 'false'; // dando la vuelta a la declaración 
?> 
Notas 
Nota: Puesto que esto es una construcción del lenguaje y no una función, no puede 
ser llamada usando funciones variables. 
 
 
Sugerencia 
Un beneficio de pasar varios argumentos sobre la concatenación en echo es la 
precedencia del operador punto en PHP. Si se pasan varios argumentos, no serán 
necesarios paréntesis para forzar la precedencia: 
<?php 
echo "Sum: ", 1 + 2; 
echo "Hello ", isset($name) ? $name : "John Doe", "!"; 
Con la concatenación, el operador punto tiene mayor precedencia que los 
operadores de adición y ternario, por lo que se deben utilizar paréntesis para un 
correcto funcionamiento: 
<?php 
echo 'Sum: ' . (1 + 2); 
echo 'Hello ' . (isset($name) ? $name : 'John Doe') . '!'; 
 
Cuando empezamos el aprendizaje de un lenguaje de programación; es normal que 
las primeras líneas, scripts o programas que escribimos, sean por medio de la 
consola que el lenguaje provee, esto es bueno, porque nos permite, centrarnos en la 
comprensión de la sintaxis del lenguaje, olvidándonos de otros aspectos que 
podemos aprender en el camino; ese es el caso, cuando necesitamos Solicitar DATOS 
por CONSOLA en PHP, estos datos podemos leerlos por teclado mediante la consola 
en PHP para hacer pruebas, antes de escribir una página en HTML con los controles 
que capturen los valores ingresados. 
Solicitar DATOS por CONSOLA en PHP | Leer datos por teclado en PHP 
Método readline en PHP 
Permite leer una línea ingresada por el usuario en la PHP CLI, útil para recuperar 
cualquier dato necesario en un script PHP. 
La forma de uso de este método es muy sencillo, digamos que necesitamos solicitar 
un nombre y mostrarlo; podemos abarcarlo de la siguiente forma: 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
Código fuente, PROYECTOS, Cursos, Ejercicios, Manuales y muchos MáS AQUÍ 
Ejemplo 1 del funcionamiento readline en PHP: Solicitando un nombre. 
 
Cómo podemos observar, este método; recibe un valor tipo cadena o String, para 
mostrarlo en la consola; el valor ingresado es almacenado en la variable «$nombre», 
que posteriormente podemos manipularla según nuestras necesidades, en este caso 
solo es mostrarla. 
Cómo salida de este ejemplo obtenemos: 
Ingrese su nombre: Iván 
Hola, Iván 
Ejemplo 2 del funcionamiento readline en PHP: Sumando dos números. 
 
Ahora nuestro ejemplo se encarga de solicitar dos valores, para realizar una 
operación matemática, si observas, los datos son tratados igual que el ejemplo 1, sin 
embargo, PHP; se encarga de manejar el formato correcto para el valor ingresado; 
en este caso números. 
Cómo salida de este ejemplo obtenemos: 
Ingrese el primer número: 5 
Ingrese el segundo número: 2 
La suma es: 7 
Finalmente, podemos darnos cuenta, como podemos ingresar datos por consola en 
PHP, utilizando readline, un método muy útil; cuando necesitamos que el usuario 
ingrese un valor, con el cual trabajará nuestro script. 
 
If Else end if 
(PHP 4, PHP 5, PHP 7, PHP 8) 
elseif, como su nombre indica, es una combinación de if y else. Como else, 
extiende una if declaración para ejecutar una declaración diferente en caso de que 
la if expresión original se evalúe como false. Sin embargo, a diferencia de else, 
ejecutará esa expresión alternativa solo si la elseif expresión condicional se evalúa 
como true. Por ejemplo, el siguiente código mostraría a es mayor que b , a igual a b 
o a es menor que b : 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
<?php 
if ($a > $b) { 
echo "a is bigger than b"; 
} elseif ($a == $b) { 
echo "a is equal to b"; 
} else { 
echo "a is smaller than b"; 
} 
?> 
 
 
 
Puede haber varios elseifs dentro de la misma ifdeclaración. Se ejecutará la 
primera elseifexpresión (si la hay) que evalúe a . trueEn PHP, también puedes 
escribir 'else if' (en dos palabras) y el comportamiento sería idéntico al de 'elseif' 
(en una sola palabra). El significado sintáctico es ligeramente diferente (si está 
familiarizado con C, este es el mismo comportamiento), pero la conclusión es que 
ambos darían como resultado exactamente el mismo comportamiento. 
La elseifdeclaración solo se ejecuta si la ifexpresión anterior y las expresiones 
anteriores elseifse evalúan como false, y la elseifexpresión actual se evalúa como 
true. 
Nota : tenga en cuenta que elseify else if solo se considerará exactamente igual 
cuando se usen corchetes como en el ejemplo anterior. Cuando use dos puntos 
para definir sus condiciones if/ elseif, no debe separarlas else ifen dos palabras, o 
PHP fallará con un error de análisis. 
<?php 
 
/* Incorrect Method: */ 
if ($a > $b): 
echo $a." is greater than ".$b; 
else if ($a == $b): // Will not compile. 
echo "The above line causes a parse error."; 
endif; 
 
 
/* Correct Method: */ 
if ($a > $b): 
echo $a." is greater than ".$b; 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
elseif ($a == $b): // Note the combination of the words. 
echo $a." equals ".$b; 
else: 
echo $a." is neither greater than or equal to ".$b; 
endif; 
 
?> 
 
switch 
 PHP 5, PHP 7, PHP 8) 
La sentencia switch es similar a una serie de sentencias IF en la misma expresión. En 
muchas ocasiones, es posible que se quiera comparar la misma variable (o 
expresión) con muchos valores diferentes, y ejecutar una parte de código distinta 
dependiendo de a que valor es igual. Para esto es exactamente la expresión switch. 
Nota: Cabe señalar que a diferencia de algunos otros lenguajes, la sentencia 
continue se aplica a switch y actúa de manera similar a break. Si se tiene un switch 
dentro de un bucle y se desea continuar a la siguiente iteración de del ciclo exterior, 
se utiliza continue 2. 
Nota: 
Tener en cuenta que switch/case hace comparaciones flexibles. 
Versión Descripción 
7.0.0 Múltiples casos predeterminados (default) emitirán un error de tipo 
E_COMPILE_ERROR. 
Losdos 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: 
Ejemplo #1 Estructura switch 
<?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) { 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
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; 
} 
?> 
 
 
 
 
Ejemplo #2 Estrutura switch permite el uso de strings 
<?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 cómo la sentencia switch es ejecutada con el fin de evitar 
errores. La sentencia switch ejecuta línea por línea (en realidad, sentencia por 
sentencia). Al principio, ningún código es ejecutado. Solo cuando se encuentra una 
sentencia case cuya expresión se evalúa a un valor que coincida con el valor de la 
con un valor que coincide con el valor de la expresión switch, PHP comienza a 
ejecutar la sentencias. PHP continúa 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. Por ejemplo: 
<?php 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
switch ($i) { 
case 0: 
echo "i es igual a 0"; 
case 1: 
echo "i es igual a 1"; 
case 2: 
echo "i es igual a 2"; 
} 
?> 
Aquí, si $i es igual a 0, PHP ejecutaría todas las sentencias echo! Si $i es igual a 1, 
PHP ejecutaría las últimas dos sentencias echo. Se obtendría el comportamiento 
esperado (se mostraría 'i es igual a 2') sólo si $i es igual a 2. Por lo tanto, es 
importante no olvidar las sentencias break (aunque es posible que se desee evitar 
proporcionarlas a propósito bajo determinadas circunstancias). 
En una sentencia switch, la condición es evaluada sólo una vez y el resultado es 
comparado con cada una de las sentencias case. En una sentencia elseif, la condición 
es evaluada otra vez. Si la condición es más complicada que una simple comparación 
y/o está en un bucle estrecho, un switch puede ser más rápido. 
La lista de sentencias para un caso también puede estar vacía, lo cual simplemente 
pasa el control a la lista de sentencias para el siguiente caso. 
<?php 
switch ($i) { 
case 0: 
case 1: 
case 2: 
echo "i es menor que 3 pero no negativo"; 
break; 
case 3: 
echo "i es 3"; 
} 
?> 
Un caso especial es el default. Este caso coincide con cualquier cosa que no se haya 
correspondido por los otros casos. Por ejemplo: 
<?php 
switch ($i) { 
case 0: 
echo "i es igual a 0"; 
break; 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
case 1: 
echo "i es igual a 1"; 
break; 
case 2: 
echo "i es igual a 2"; 
break; 
default: 
echo "i no es igual a 0, 1 ni 2"; 
} 
?> 
 
 
 
 
La sintaxis alternativa para las estructuras de control es compatible con los switch. 
Para obtener más información, consulte Sintaxis alternativa de estructuras de 
control. 
<?php 
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; 
default: 
echo "i no es igual a 0, 1 ni 2"; 
endswitch; 
?> 
Es posible utilizar un punto y coma en lugar de dos puntos después de un caso como: 
<?php 
switch($beer) 
{ 
case 'tuborg'; 
case 'carlsberg'; 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
case 'heineken'; 
echo 'Buena elección'; 
break; 
default; 
echo 'Por favor haga una nueva selección...'; 
break; 
} 
?> 
 
 
 
 
 
 
 
<?php 
$a = 0; 
 
if(++$a == 3) echo 3; 
elseif(++$a == 2) echo 2; 
elseif(++$a == 1) echo 1; 
else echo "No match!"; 
 
// Outputs: 2 
 
$a = 0; 
 
switch(++$a) { 
 case 3: echo 3; break; 
 case 2: echo 2; break; 
 case 1: echo 1; break; 
 default: echo "No match!"; break; 
} 
// Outputs: 1 
?> 
It is therefore perfectly safe to do: 
 
<?php 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
switch(winNobelPrizeStartingFromBirth()) { 
case "peace": echo "You won the Nobel Peace Prize!"; break; 
case "physics": echo "You won the Nobel Prize in Physics!"; break; 
case "chemistry": echo "You won the Nobel Prize in Chemistry!"; break; 
case "medicine": echo "You won the Nobel Prize in Medicine!"; break; 
case "literature": echo "You won the Nobel Prize in Literature!"; break; 
default: echo "You bought a rusty iron medal from a shady guy who insists it's a 
Nobel Prize..."; break; 
} 
?> 
 
without having to worry about the function being re-evaluated for every case. 
There's no need to preemptively save the result in a variable either. 
up 
down 
96 
septerrianin at mail dot ru ¶ 
4 years ago 
php 7.2.8. 
The answer to the eternal question " what is faster?": 
1 000 000 000 iterations. 
 
<?php 
$s = time(); 
for ($i = 0; $i < 1000000000; ++$i) { 
 $x = $i%10; 
 if ($x == 1) { 
 $y = $x * 1; 
 } elseif ($x == 2) { 
 $y = $x * 2; 
 } elseif ($x == 3) { 
 $y = $x * 3; 
 } elseif ($x == 4) { 
 $y = $x * 4; 
 } elseif ($x == 5) { 
 $y = $x * 5; 
 } elseif ($x == 6) { 
 $y = $x * 6; 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
 } elseif ($x == 7) { 
 $y = $x * 7; 
 } elseif ($x == 8) { 
 $y = $x * 8; 
 } elseif ($x == 9) { 
 $y = $x * 9; 
 } else { 
 $y = $x * 10; 
 } 
} 
print("if: ".(time() - $s)."sec\n"); 
 
$s = time(); 
for ($i = 0; $i < 1000000000; ++$i) { 
 $x = $i%10; 
 switch ($x) { 
 case 1: 
 $y = $x * 1; 
 break; 
 case 2: 
 $y = $x * 2; 
 break; 
 case 3: 
 $y = $x * 3; 
 break; 
 case 4: 
 $y = $x * 4; 
 break; 
 case 5: 
 $y = $x * 5; 
 break; 
 case 6: 
 $y = $x * 6; 
 break; 
 case 7: 
 $y = $x * 7; 
 break; 
 case 8: 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
 $y = $x * 8; 
 break; 
 case 9: 
 $y = $x * 9; 
 break; 
 default: 
 $y = $x * 10; 
 } 
} 
print("switch: ".(time() - $s)."sec\n"); 
?> 
 
Results: 
if: 69sec 
switch: 42sec 
22 years ago 
 
 
switch (true) { 
 
 case (X != 1): 
 
 case (Y != 1): 
 
 default: 
} 
 
<?php 
 
$kinds = ['moo', 'kind1', 'kind2']; 
 
foreach ($kinds as $kind) { 
 switch($kind) 
 { 
 default: 
 // The kind wasn't valid, set it to the default 
 $kind = 'kind1'; 
 var_dump('default'); 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
 
 case 'kind1': 
 var_dump('1'); 
 break; 
 
 case 'kind2': 
 var_dump('2'); 
 break; 
 
 case 'kindn': 
 var_dump('n-th'); 
 break; 
 } 
 
 echo "\n\n"; 
} 
 
?> 
 
<?php 
function testSwitch($key) { 
 switch ($key) { 
 case 'non numeric string': 
 echo $key . ' matches "non numeric string"'; 
 break; 
 } 
} 
 
testSwitch(0); // pre-PHP8, returns '0 matches "non numeric string"' 
?> 
+add a note 
 Estructuras de Control 
o Introducción 
o if 
o else 
o elseif/else if 
o Sintaxis alternativa de estructuras de control 
o while 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
o do-while 
o for 
o foreach 
o break 
o continue 
o switch 
o match 
o declare 
o return 
o require 
o include 
o require_once 
o include_once 
o goto 
 
 
 
 
 
 
while 
(PHP 4, PHP 5, PHP 7, PHP 8) 
Los bucles while son el tipo más sencillo de bucle en PHP. Se comportan igual que su 
contrapartida en C. La forma básica de una sentencia while es: 
while (expr) 
 sentencia 
 
El significado de una sentencia while essimple. Le dice a PHP que ejecute las 
sentencias anidadas, tanto como la expresión while se evalúe como true. El valor de 
la expresión es verificado cada vez al inicio del bucle, por lo que incluso si este valor 
cambia durante la ejecución de las sentencias anidadas, la ejecución no se detendrá 
hasta el final de la iteración (cada vez que PHP ejecuta las sentencias contenidas en 
el bucle es una iteración). A veces, si la expresión while se evalúa como false desde 
el principio, las sentencias anidadas no se ejecutarán 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: 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
while (expr): 
 sentencias 
 ... 
endwhile; 
 
Los siguientes ejemplos son idénticos y ambos presentan los números del 1 al 10: 
<?php 
/* ejemplo 1 */ 
 
$i = 1; 
while ($i <= 10) { 
echo $i++; /* el valor presentado sería 
$i antes del incremento 
(post-incremento) */ 
} 
 
/* ejemplo 2 */ 
 
$i = 1; 
while ($i <= 10): 
echo $i; 
$i++; 
endwhile; 
?> 
 
do-while 
(PHP 4, PHP 5, PHP 7, PHP 8) 
Los bucles do-while son muy similares a los bucles while, excepto que la expresión 
verdadera es verificada al final de cada iteración en lugar que al principio. La 
diferencia principal con los bucles while es que está garantizado que corra la primera 
iteración de un bucle do-while (la expresión verdadera sólo es verificada al final de la 
iteración), mientras que no necesariamente va a correr con un bucle while regular 
(la expresión verdadera es verificada al principio de cada iteración, si se evalúa como 
false justo desde el comienzo, la ejecución del bucle terminaría inmediatamente). 
Hay una sola sintaxis para bucles do-while: 
<?php 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
$i = 0; 
do { 
echo $i; 
} while ($i > 0); 
?> 
El bucle de arriba se ejecutaría exactamente una sola vez, ya que después de la 
primera iteración, cuando la expresión verdadera es verificada, se evalúa como false 
($i no es mayor que 0) y termina la ejecución del bucle. 
Los usuarios avanzados de C pueden estar familiarizados con un uso distinto del 
bucle do-while, para permitir parar la ejecución en medio de los bloques de código, 
mediante el encapsulado con do-while (0), y utilizando la sentencia break. El 
siguiente fragmento de código demuestra esto: 
<?php 
do { 
if ($i < 5) { 
echo "i no es lo suficientemente grande"; 
break; 
} 
$i *= $factor; 
if ($i < $minimum_limit) { 
break; 
} 
echo "i está bien"; 
 
/* procesar i */ 
 
} while (0); 
?> 
No se preocupe si no se entiende esto completamente o en absoluto. Se pueden 
codificar scripts e incluso scripts potentes sin usar esta 'característica'. Desde PHP 
5.3.0, es posible utilizar el operador goto en lugar de este hack. 
+add a note 
User Contributed Notes 6 notes 
<?php 
$x = 1; 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
 
do { 
 echo "The number is: $x <br>"; 
 $x++; 
} while ($x <= 5); 
?> 
up 
down 
-2 
Martin ¶ 
8 years ago 
Do-while loops can also be used inside other loops, for example: 
 
<?php 
// generating an array with random even numbers between 1 and 1000 
 
$numbers = array(); 
$array_size = 10; 
 
// for loop runs as long as 2nd condition evaluates to true 
for ($i=0;$i<$array_size;$i++) { 
 
 // always executes (as long as the for-loop runs) 
 do { 
 $random = rand(1,1000); 
 
 // if the random number is even (condition below is false), the do-while-loop 
execution ends 
 // if it's uneven (condition below is true), the loop continues by generating a new 
random number 
 } while (($random % 2) == 1); 
 
 // even random number is written to array and for-loop continues iteration until 
original condition is met 
 $numbers[] = $random; 
} 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
 
// sorting array by alphabet 
 
asort($numbers); 
 
// printing array 
 
echo '<pre>'; 
print_r($numbers); 
echo '</pre>'; 
?> 
for 
(PHP 4, PHP 5, PHP 7, PHP 8) 
Los bucles for son los más complejos en PHP. Se comportan como sus homólogos en 
C. La sintaxis de un bucle for es: 
for (expr1; expr2; expr3) 
 sentencia 
 
La primera expresión (expr1) es evaluada (ejecutada) una vez incondicionalmente al 
comienzo del bucle. 
En el comienzo de cada iteración, se evalúa expr2. Si se evalúa como true, el bucle 
continúa y se ejecutan la/sy sentencia/s anidada/s. Si se evalúa como false, finaliza 
la ejecución del bucle. 
Al final de cada iteración, se evalúa (ejecuta) expr3. 
Cada una de las expresiones puede estar vacía o contener múltiples 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é vacía 
significa que el bucle debería ser corrido indefinidamente (PHP implícitamente lo 
considera como true, como en C). Esto puede no ser tan inútil como se pudiera 
pensar, ya que muchas veces se debe terminar el bucle usando una sentencia 
condicional break en lugar de utilizar la expresión verdadera del for. 
Considere los siguientes ejemplos. Todos ellos muestran los números del 1 al 10: 
<?php 
/* ejemplo 1 */ 
 
for ($i = 1; $i <= 10; $i++) { 
echo $i; 
} 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
 
/* ejemplo 2 */ 
 
for ($i = 1; ; $i++) { 
if ($i > 10) { 
break; 
} 
echo $i; 
} 
 
/* ejemplo 3 */ 
 
$i = 1; 
for (; ; ) { 
if ($i > 10) { 
break; 
} 
echo $i; 
$i++; 
} 
 
/* ejemplo 4 */ 
 
for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); 
?> 
Por supuesto, el primer ejemplo parece ser el mejor (o quizás el cuarto), pero se 
puede observar que la posibilidad de usar expresiones vacías en los bucles for 
resulta útil en muchas ocasiones. 
PHP también admite la sintaxis alternativa de los dos puntos para bucles for. 
for (expr1; expr2; expr3): 
 sentencia 
 ... 
endfor; 
 
Es una cosa común a muchos usuarios iterar por medio de arrays como en el 
siguiente ejemplo. 
<?php 
/* 
Curso: Programación inicial Web 
Profesor Pablo Lioi Estructuras básicas 
 
* Este es un array con algunos datos que se quieren modificar 
* cuando se recorra el bucle for. 
*/ 
$people = array( 
array('name' => 'Kalle', 'salt' => 856412), 
array('name' => 'Pierre', 'salt' => 215863) 
); 
 
for($i = 0; $i < count($people); ++$i) { 
$people[$i]['salt'] = mt_rand(000000, 999999); 
} 
?> 
El código anterior puede ser lento, debido a que el tamaño del array se capta en 
cada iteración. Dado que el tamaño nunca cambia, el bucle puede ser fácilmente 
optimizado mediante el uso de una variable intermedia para almacenar el tamaño 
en lugar de llamar repetidamente a count(): 
<?php 
$people = array( 
array('name' => 'Kalle', 'salt' => 856412), 
array('name' => 'Pierre', 'salt' => 215863) 
); 
 
for($i = 0, $size = count($people); $i < $size; ++$i) { 
$people[$i]['salt'] = mt_rand(000000, 999999); 
} 
?>

Continuar navegando

Materiales relacionados

66 pag.
ResumenIIC1103-2 (1)

User badge image

Central de Apuntes

78 pag.
GD2 - PHP

SIN SIGLA

User badge image

Yolibett Mendoza

192 pag.
Manual de PHP y MySQL

User badge image

Alejandra Leon

80 pag.
Programacion-PHP-DCV

User badge image

Aprenda aquí