Diferencia entre revisiones de «Programación en PHP/Bucles»

Contenido eliminado Contenido añadido
Sin resumen de edición
Sin resumen de edición
Línea 3:
Además de los condicionales, todo lenguaje de programación necesita bucles, PHP no es una excepción.
==Tipos de Bucles==
Existen 34 tipos de bucles para PHP, estos son:
 
# While
# Do...While
# For
# Foreach
 
Cada uno de ellos tiene su sintáxissintaxis y su uso específico. Cada uno estará explicado detalladamente luego.
----
===While===
Línea 16 ⟶ 17:
while (condición) sentencia;
</source>
Su funcionamiento es sencillo, ya que pimeroprimero se evaluaevalúa que la condición sea verdadera y luego se ejecuta, hasta que la condición pase a ser falsa; una sentencia '''while''' (Español: Mientras) puede que no se ejecute ni siquiera una vez, si su condición es inicialmente falsa.
 
Veamos un ejemplo de su uso:
Línea 28 ⟶ 29:
Salida:
La variable $i vale: 4
Esta sintáxissintaxis de la instrucción '''while''' solo permite el uso de una sentencia dentro del bucle, en el ejemplo anterior la sentencia <tt>$i += 1</tt> (ver [[Programación en PHP/Operadores|Operadores]]) es la única que se repite.
 
Un bucle '''while''' puede contener varias sentencia, encerrandolasencerrándolas entre llaves ({}) o usando ésta sintáxissintaxis alternativa:
<source lang="php">
while (condición):
Línea 126 ⟶ 127:
Los restantes '3' números no son múltiplos ni de 2 ni de 3.
 
Analicemos el ejemplo. La variable <tt>$i</tt> actuaactúa como un ''contador'' indicandonosindicándonos cuantas iteraciones han sido llevadas a cabo, además de ser usado para evaluar la condición de bucle '''while'''. Las variables <tt>$mult_2_3</tt>, <tt>$mult_2</tt> y <tt>$mult_3</tt> son tambientambién contadores, pero estos nos indican, respectivamente, cuantos múltiplos de 2 y 3 (simultaneamentesimultáneamente), solo de 2, y solo de 3 se han encontrado. Una vez completadas las 10 iteraciones se muestran los valores de estas tres variables y se calcula la cantidad de números que no son múltiplos ni de 2 ni de 3.
 
 
Línea 135 ⟶ 136:
Los bucles infinitos son aquellos en que la condición a evaluar siempre es verdadera, por lo que las iteraciones nunca se detienen. Antes de ejecutar un fragmento de código que contenga un bucle (sea '''while''',[[#Do...While|do...while]] o [[#For|for]]), es importante asegurarse de que el bucle eventualmente se detendrá. En nuestro ejemplo con números primos la sentencia <tt>$i += 1</tt> asegura que el contador <tt>$i</tt> aumente una unidad en cada iteración hasta alcanzar el valor 11, haciendo así falsa la condición con lo que se termina el bucle.
 
Aunque un bucle se termina cuando la condición se evalúa a falsa hay ocasiones en que necesitamos interumpirinterrumpir el bucle abruptamente. La instrucción '''break''' (Español: Interrupción) interrumpe inmediatamente la ejecución del bucle y el control se pasa a la instrucción inmediatamente posterior al '''while'''. Veamos un último par de ejemplos usando '''break''':
 
{|align="center" border ="1" cellpadding="5"
Línea 185 ⟶ 186:
 
===Do...While===
Su uso es similar a while, pero aquí, las sentencias que siguen al '''do''' (Español: Hacer) se ejecutan por lo menos una vez y se comprueba la condición luego de la primera iteración; así, si es verdadera la condición se repite por segunda vez, si es falsa se continúa con las sentencias inmediatamente despuesdespués de la instrucción '''while'''. Tiene sólo una sintáxis.
 
Sintáxis:
Línea 219 ⟶ 220:
 
===For===
Los bucles '''for''' (Español: Para) son los más complejos en PHP (y en otros lenguajes de programación). Su sintáxissintaxis es la siguiente:
 
Sintáxis:
Línea 321 ⟶ 322:
 
Bueno, ya sabemos como crear dos tipos de bucles, los '''while''' (o '''do...while''') y los '''for'''. Aunque puedes hacer codificar programas que hagan lo mismo con cualquiera de los bucles lo más lógico sería usar bucles '''while''' cuando no sabes el número de iteraciones que debes hacer (y la condición es del tipo ($respuesta == "Si")), y bucles '''for''' cuando si lo sabes (y la condición es del tipo ($X <= 10)).
 
===Foreach===
 
Introducido en PHP 4 es una solución fácil para trabajar con ''arreglos'', muy semejante a Perl y otros lenguajes, funciona solo en arreglos y presentara un error al utilizar una variable con diferente tipo o no inicializada. Existen dos sintaxis la segunda opción en menor pero tiene mejor uso que la primera.
 
Sintáxis:
<source lang="php">
foreach (expresión_arreglo as $valor)
sentencia
</source>
<source lang="php">
foreach (expresión_arreglo as $llave => $valor)
sentencia
</source>
 
En la primera forma los siclos sobre el ''arreglo'' están dados por ''expresión_arreglo''. En cada siclo, el valor del elemento actual se asigna internamente a ''$valor'' y el puntero interno del arreglo avanza en uno de tal forma que en el siguiente siclo vera el siguiente elemento.
 
La segunda forma es la misma cosa, salvo que la clave del elemento actual se asigna a la variable $llave en cada bucle.
 
A partir de PHP 5, también es posible iterar objetos.
 
'''Nota:''' Cuando foreach inicia por primera vez su ejecución, el puntero interno del arreglo reinicia automáticamente en el primer elemento del arreglo. Esto significa que este necesita llamar a ''reset()'' antes de un blucle foreach.
 
'''Nota:''' A menos que el arreglo sea referenciado, foreach opera en una copia de el arreglo especifico y no en el propio arreglo. foreach tiene algunos efectos laterales en el puntero del arreglo. No se cuenta con un puntero del arreglo durante o después del foreach sin reiniciarlo.