Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales Tipos de variables en PHP 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 ?> 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 PHP Estructuras iniciales Variable de tipo Array No sé si realmente puedo poner como array al 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. <?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, esta 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 PHP Estructuras iniciales Objetos A mí me gusta ver las clases como si fueran los planos de una casa y el objeto la casa en sí 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 ?> https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales Resources Las variables de tipo resource, contienen referencias a recursos externos, estas son creadas y usadas por funciones especiales. Ejemplos: Mysql link, es el que se usa para hacer la conexión a base de datos. Por lo general no tocara estas variables directamente sino a través de una función en este caso Mysql_connect(); crea el recurso y lo puede utilizar con otras funciones ( mysql_query(), mysql_result(), otras) y es destruido por mysql_close() NULL El valor especial Null representa una variable sin valor y este es el único valor que puede tener este tipo de variable. La parte de Pseudo types ha cambiado desde la versión 7.4 leer con cautela Pseudo – types Pseudo tipos son palabras clave usadas en la documentación de PHP para especificar los tipos o valores que puede tener un argumento. Por favor nótese que no son primitivas del lenguaje PHP. Por lo tanto, no puede utilizar Pseudo tipos como sugerencias de tipo en funciones personalizadas. Esto ha cambiado hace poco tiempo. manipulación de tipos(Type Juggling) PHP no requiere (ni soporta) la definición explicita de tipos en la declaración de variables. El tipo de la variable se determina por el contexto en el cual se emplea la variable. Es decir, si se asigna un valor string a una variable $var, entonces $var se convierte en un string. Si un valor integer es entonces asignado a la misma variable $var, esta se convierte en integer. <?php $foo = "0"; // $foo es string (ASCII 48) $foo += 2; // $foo es ahora un integer (2) $foo = $foo + 1.3; // $foo es ahora un float (3.3) $foo = 5 + "10 Cerditos pequeñitos"; // $foo es integer (15) $foo = 5 + "10 Cerdos pequeños"; // $foo es integer (15) ?> Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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 Enumerations a partir de PHP 8.1 Cumple la función de capa restrictiva sobre las clases o constantes de clases, para proveer una forma de definir un set de posibles valores para un tipo de variable. En pocas palabras estamos creando un tipo de variable que puede recibir ciertos valores. <?php enum Suit { case Hearts; case Diamonds; case Clubs; case Spades; } function do_stuff(Suit $s) { // ... } do_stuff(Suit::Spades); ?> De hecho hemos estado utilizando una clase de enumeración desde los inicios de PHP y esta es boolean que es una enumeración build-in (que viene por defecto en el lenguaje o programa) que nos permite 2 valores true o false Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales Operadores aritméticos ¿Recuerdan la aritmética básica de la escuela? Estos funcionan igual que aquellos. 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. $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 % $btendrá el mismo signo que $a. Por ejemplo: Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales <?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. 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.) https://www.php.net/manual/es/language.operators.logical.php#language.operators.logical https://www.php.net/manual/es/language.operators.precedence.php Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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); ?> El resultado del ejemplo sería algo similar a: bool(true) bool(false) bool(false) bool(true) Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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 ninguna 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 funciona con 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. https://www.php.net/manual/es/ini.core.php#ini.short-open-tag Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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."; 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 álido. ($variable) ? echo 'true' : echo 'false'; https://www.php.net/manual/es/function.echo.php#refsect1-function.echo-examples Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales // Sin embargo, el siguiente código funcionará: ($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. https://www.php.net/manual/es/functions.variable-functions.php http://www.youtube.com/c/Byspel?sub_confirmation=1 Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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: 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. https://shop.byspel.com/ Curso : Programación Inicial Web Profesor: PabloLioi PHP Estructuras iniciales 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 : <?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. Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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 if en 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; 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; ?> Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales switch (PHP 4, 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. 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: 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) { 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; } ?> https://www.php.net/manual/es/control-structures.continue.php https://www.php.net/manual/es/types.comparisons.php#types.comparisions-loose Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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 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 Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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; 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"; https://www.php.net/manual/es/control-structures.alternative-syntax.php Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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'; 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!"; $a = 0; switch(++$a) { case 3: echo 3; break; case 2: echo 2;break; case 1: echo 1; break; default: echo "No match!"; break; } ?> Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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; } /* ejemplo 2 */ for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i; } /* ejemplo 3 */ $i = 1; for (; ; ) { if ($i > 10) { break; } echo $i; https://www.php.net/manual/es/control-structures.break.php Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales $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 /* * 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); } https://www.php.net/manual/es/function.count.php Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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 es simple. 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: 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; ?> Curso : Programación Inicial Web Profesor: Pablo Lioi PHP Estructuras iniciales 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 $i = 0; do { echo $i; 0} 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); ?> https://www.php.net/manual/es/control-structures.break.php
Compartir