El bucle foreach es un tipo especial de bucle que permite recorrer estructuras que contienen varios elementos (como matrices, recursos u objetos) sin necesidad de preocuparse por el número de elementos.
En otros lenguajes de programación en los que los índices de las matrices son números naturales correlativos, las matrices se pueden recorrer fácilmente con bucles for. Pero como las matrices de PHP son matrices asociativas y los índices de las matrices no tienen por qué ser valores numéricos correlativos, nos podemos encontrar con problemas. Por ejemplo, podemos hacer involuntariamente referencia a un término inexistente o algunos términos pueden resultar inaccesibles.
Ejemplo de bucle for incorrecto (1)
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
<p>bb</p>
<br />
<b>Warning</b>: Undefined array key 2 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<br />
<b>Warning</b>: Undefined array key 3 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<p>Final</p>
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle for incorrecto (1) - Paso 1
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
Se ejecuta la primera instrucción del programa.
En este caso, se crea la matriz $matriz.
Ejemplo de bucle for incorrecto (1) - Paso 2
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
A continuación se abre la etiqueta <pre>.
Ejemplo de bucle for incorrecto (1) - Paso 3
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
A continuación se imprimen los valores de la matriz $matriz.
Ejemplo de bucle for incorrecto (1) - Paso 4
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
A continuación se cierra la etiqueta </pre>.
Ejemplo de bucle for incorrecto (1) - Paso 5
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
A continuación se ejecuta el bucle. El primer paso es dar el valor inicial a la variable de control.
En este caso, la variable de control es $i y toma el valor 0.
Ejemplo de bucle for incorrecto (1) - Paso 6
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
A continuación se comprueba que la condición de continuación se cumple.
En este caso, $i es inferior a 4 (vale 0), así que se pasa a ejecutar las instrucciones del bloque de sentencias.
Ejemplo de bucle for incorrecto (1) - Paso 7
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
A continuación se ejecutan las instrucciones del bloque.
En este caso, se imprime el texto <p>a</p> ya que $i tiene el valor 0 y $matriz[0] tiene el valor "a".
Ejemplo de bucle for incorrecto (1) - Paso 8
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
A continuación se ejecuta de nuevo la instrucción de paso.
En este caso, la variable $i aumenta una unidad, por lo que ahora vale 1.
Ejemplo de bucle for incorrecto (1) - Paso 9
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
A continuación se comprueba de nuevo que la condición de continuación se cumple.
En este caso, $i es inferior a 4 (vale 1), así que se pasa a ejecutar las instrucciones del bloque de sentencias.
Ejemplo de bucle for incorrecto (1) - Paso 10
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
<p>bb</p>
A continuación se ejecutan de nuevo las instrucciones del bloque.
En este caso, se imprime el texto <p>bb</p> ya que $i tiene el valor 1 y $matriz[1] tiene el valor "bb".
Ejemplo de bucle for incorrecto (1) - Paso 11
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
<p>bb</p>
A continuación se ejecuta de nuevo la instrucción de paso.
En este caso, la variable $i aumenta una unidad, por lo que ahora vale 2.
Ejemplo de bucle for incorrecto (1) - Paso 12
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
<p>bb</p>
A continuación se comprueba de nuevo que la condición de continuación se cumple.
En este caso, $i es inferior a 4 (vale 2), así que se pasa a ejecutar las instrucciones del bloque de sentencias.
Ejemplo de bucle for incorrecto (1) - Paso 13
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
<p>bb</p>
<br />
<b>Warning</b>: Undefined array key 2 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
Esta instrucción genera un aviso (puesto que intenta imprimir el valor $matriz[2], que no existe) y escribe un párrafo vacío (puesto que no hay valor de $matriz[2].
Ejemplo de bucle for incorrecto (1) - Paso 14
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
<p>bb</p>
<br />
<b>Warning</b>: Undefined array key 2 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se ejecuta de nuevo la instrucción de paso.
En este caso, la variable $i aumenta una unidad, por lo que ahora vale 3.
Ejemplo de bucle for incorrecto (1) - Paso 15
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
<p>bb</p>
<br />
<b>Warning</b>: Undefined array key 2 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se comprueba de nuevo que la condición de continuación se cumple.
En este caso, $i es inferior a 4 (vale 3), así que se pasa a ejecutar las instrucciones del bloque de sentencias.
Ejemplo de bucle for incorrecto (1) - Paso 16
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
<p>bb</p>
<br />
<b>Warning</b>: Undefined array key 2 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<br />
<b>Warning</b>: Undefined array key 3 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
Esta instrucción genera un aviso (puesto que intenta imprimir el valor $matriz[3], que no existe) y escribe un párrafo vacío (puesto que no hay valor de $matriz[3].
Ejemplo de bucle for incorrecto (1) - Paso 17
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
<p>bb</p>
<br />
<b>Warning</b>: Undefined array key 2 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<br />
<b>Warning</b>: Undefined array key 3 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se ejecuta de nuevo la instrucción de paso.
En este caso, la variable $i aumenta una unidad, por lo que ahora vale 4.
Ejemplo de bucle for incorrecto (1) - Paso 18
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
<p>bb</p>
<br />
<b>Warning</b>: Undefined array key 2 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<br />
<b>Warning</b>: Undefined array key 3 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se comprueba de nuevo que la condición de continuación se cumple.
En este caso, $i ya no es inferior a 4 (vale 4), así que no se ejecutan las instrucciones del bloque de sentencias y el bucle se termina.
Ejemplo de bucle for incorrecto (1) - Paso 19
<?php
$matriz = ["a", "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 4; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
)
</pre>
<p>a</p>
<p>bb</p>
<br />
<b>Warning</b>: Undefined array key 2 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<br />
<b>Warning</b>: Undefined array key 3 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<p>Final</p>
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime el párrafo final.
Nota: Este problema se podría evitar fácilmente, puesto que los índices son correlativos. La solución sería en este caso expresar la condición de continuación en función del tamaño de la matriz, utilizando $i < count($matriz) en vez de $i < 4.
Ejemplo de bucle for incorrecto (2)
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
<p>a</p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<p>bb</p>
<p>Final</p>
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle for incorrecto (2) - Paso 1
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
Se ejecuta la primera instrucción del programa.
En este caso, se crea la matriz $matriz.
Ejemplo de bucle for incorrecto (2) - Paso 2
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
A continuación se abre la etiqueta <pre>.
Ejemplo de bucle for incorrecto (2) - Paso 3
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
A continuación se imprimen los valores de la matriz $matriz.
Ejemplo de bucle for incorrecto (2) - Paso 4
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
A continuación se cierra la etiqueta </pre>.
Ejemplo de bucle for incorrecto (2) - Paso 5
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
A continuación se ejecuta el bucle. El primer paso es dar el valor inicial a la variable de control.
En este caso, la variable de control es $i y toma el valor 0.
Ejemplo de bucle for incorrecto (2) - Paso 6
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
A continuación se comprueba que la condición de continuación se cumple.
En este caso, $i es inferior a 3 (vale 0), así que se pasa a ejecutar las instrucciones del bloque de sentencias.
Ejemplo de bucle for incorrecto (2) - Paso 7
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
<p>a</p>
A continuación se ejecutan las instrucciones del bloque.
En este caso, se imprime el texto <p>a</p> ya que $i tiene el valor 0 y $matriz[0] tiene el valor "a".
Ejemplo de bucle for incorrecto (2) - Paso 8
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
<p>a</p>
A continuación se ejecuta de nuevo la instrucción de paso.
En este caso, la variable $i aumenta una unidad, por lo que ahora vale 1.
Ejemplo de bucle for incorrecto (2) - Paso 9
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
<p>a</p>
A continuación se comprueba de nuevo que la condición de continuación se cumple.
En este caso, $i es inferior a 3 (vale 1), así que se pasa a ejecutar las instrucciones del bloque de sentencias.
Ejemplo de bucle for incorrecto (2) - Paso 10
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
<p>a</p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se ejecutan de nuevo las instrucciones del bloque.
Esta instrucción genera un aviso (puesto que intenta imprimir el valor $matriz[1], que no existe) y escribe un párrafo vacío (puesto que no hay valor de $matriz[1].
Ejemplo de bucle for incorrecto (2) - Paso 11
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
<p>a</p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se ejecuta de nuevo la instrucción de paso.
En este caso, la variable $i aumenta una unidad, por lo que ahora vale 2.
Ejemplo de bucle for incorrecto (2) - Paso 12
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
<p>a</p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se comprueba de nuevo que la condición de continuación se cumple.
En este caso, $i es inferior a 3 (vale 2), así que se pasa a ejecutar las instrucciones del bloque de sentencias.
Ejemplo de bucle for incorrecto (2) - Paso 13
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
<p>a</p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<p>bb</p>
En este caso, se imprime el texto <p>bb</p> ya que $i tiene el valor 2 y $matriz[2] tiene el valor "bb".
Ejemplo de bucle for incorrecto (2) - Paso 14
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
<p>a</p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<p>bb</p>
A continuación se ejecuta de nuevo la instrucción de paso.
En este caso, la variable $i aumenta una unidad, por lo que ahora vale 3.
Ejemplo de bucle for incorrecto (2) - Paso 15
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
<p>a</p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<p>bb</p>
A continuación se comprueba de nuevo que la condición de continuación se cumple.
En este caso, $i ya no es inferior a 3 (vale 3), así que no se ejecutan las instrucciones del bloque de sentencias y el bucle se termina.
Ejemplo de bucle for incorrecto (2) - Paso 16
<?php
$matriz = [0 => "a", 2 => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 3; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[2] => bb
)
</pre>
<p>a</p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<p>bb</p>
<p>Final</p>
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime el párrafo final.
Nota: los avisos de error de este ejemplo se podría evitar incluyendo una comprobación de existencia del elemento antes de imprimirlo (if isset($matriz[$i]) ...), aunque tendríamos el problema de no saber a priori hasta qué valor debemos ejecutar el bucle para recorrer todos los valores.
Ejemplo de bucle for incorrecto (3)
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
</pre>
<br />
<b>Warning</b>: Undefined array key 0 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<p>Final</p>
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle for incorrecto (3) - Paso 1
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
Se ejecuta la primera instrucción del programa.
En este caso, se crea la matriz $matriz.
Ejemplo de bucle for incorrecto (3) - Paso 2
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
A continuación se abre la etiqueta <pre>.
Ejemplo de bucle for incorrecto (3) - Paso 3
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
A continuación se imprimen los valores de la matriz $matriz.
Ejemplo de bucle for incorrecto (3) - Paso 4
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
</pre>
A continuación se cierra la etiqueta </pre>.
Ejemplo de bucle for incorrecto (3) - Paso 5
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
</pre>
A continuación se ejecuta el bucle. El primer paso es dar el valor inicial a la variable de control.
En este caso, la variable de control es $i y toma el valor 0.
Ejemplo de bucle for incorrecto (3) - Paso 6
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
</pre>
A continuación se comprueba que la condición de continuación se cumple.
En este caso, $i es inferior a 2 (vale 0), así que se pasa a ejecutar las instrucciones del bloque de sentencias.
Ejemplo de bucle for incorrecto (3) - Paso 7
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
</pre>
<br />
<b>Warning</b>: Undefined array key 0 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se ejecutan las instrucciones del bloque.
Esta instrucción genera un aviso (puesto que intenta imprimir el valor $matriz[0], que no existe) y escribe un párrafo vacío (puesto que no hay valor de $matriz[0].
Ejemplo de bucle for incorrecto (3) - Paso 8
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
</pre>
<br />
<b>Warning</b>: Undefined array key 0 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se ejecuta de nuevo la instrucción de paso.
En este caso, la variable $i aumenta una unidad, por lo que ahora vale 1.
Ejemplo de bucle for incorrecto (3) - Paso 9
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
</pre>
<br />
<b>Warning</b>: Undefined array key 0 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se comprueba de nuevo que la condición de continuación se cumple.
En este caso, $i es inferior a 2 (vale 1), así que se pasa a ejecutar las instrucciones del bloque de sentencias.
Ejemplo de bucle for incorrecto (3) - Paso 10
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
</pre>
<br />
<b>Warning</b>: Undefined array key 0 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se ejecutan de nuevo las instrucciones del bloque.
Esta instrucción genera otro aviso (puesto que intenta imprimir el valor $matriz[1], que no existe) y escribe un párrafo vacío (puesto que no hay valor de $matriz[1].
Ejemplo de bucle for incorrecto (3) - Paso 11
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
</pre>
<br />
<b>Warning</b>: Undefined array key 0 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se ejecuta de nuevo la instrucción de paso.
En este caso, la variable $i aumenta una unidad, por lo que ahora vale 2.
Ejemplo de bucle for incorrecto (3) - Paso 12
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
</pre>
<br />
<b>Warning</b>: Undefined array key 0 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
A continuación se comprueba de nuevo que la condición de continuación se cumple.
En este caso, $i ya no es inferior a 2 (vale 2), así que no se ejecutan las instrucciones del bloque de sentencias y el bucle se termina.
Ejemplo de bucle for incorrecto (3) - Paso 13
<?php
$matriz = ["uno" => "a", "dos" => "bb"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
for ($i = 0; $i < 2; $i++) {
print "<p>$matriz[$i]</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[dos] => bb
)
</pre>
<br />
<b>Warning</b>: Undefined array key 0 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<br />
<b>Warning</b>: Undefined array key 1 in <b>ejemplo.php</b> on line <b>7</b><br />
<p></p>
<p>Final</p>
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime el párrafo final.
Nota: Esta situación no se podría evitar pues los índices de la matriz no son valores numéricos.
La sintaxis del bucle foreach puede ser una de las siguientes:
foreach ($matriz as $valor) {
bloque_de_sentencias
}
foreach ($matriz as $indice => $valor) {
bloque_de_sentencias
}
La ejecución de esta estructura de control es la siguiente:
El bucle se ejecuta tantas veces como elementos tiene la matriz. En cada iteración, las variables $indice y $valor van tomando los valores de los índices y de la matriz para ese índice.
Si sólo se necesitan los valores almacenados en la matriz se puede utilizar tanto la primera como la segunda forma. Si se necesitan tanto los índices como los valores se debe utilizar la segunda forma. Si sólo se necesitan los índices también se debe utilizar la segunda forma.
El diagrama de flujo siguiente muestra la ejecución de un bucle foreach ...:
Ejemplo de bucle foreach (1)
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
[2] => ccc
)
</pre>
<p>a</p>
<p>bb</p>
<p>ccc</p>
<p>Final</p>
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle foreach (1) - Paso 1
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
Se ejecuta la primera instrucción del programa.
En este caso, se crea la matriz $matriz.
Ejemplo de bucle foreach (1) - Paso 2
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
A continuación se abre la etiqueta <pre>.
Ejemplo de bucle foreach (1) - Paso 3
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
[2] => ccc
)
A continuación se imprimen los valores de la matriz $matriz.
Ejemplo de bucle foreach (1) - Paso 4
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
[2] => ccc
)
</pre>
A continuación se cierra la etiqueta </pre>.
Ejemplo de bucle foreach (1) - Paso 5
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
[2] => ccc
)
</pre>
A continuación se ejecuta el bucle. La variable $valor va a ir tomando sucesivamente los valores de la matriz.
En este caso, la variable $valor toma el valor "a".
Ejemplo de bucle foreach (1) - Paso 6
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
[2] => ccc
)
</pre>
<p>a</p>
A continuación se ejecutan las instrucciones del bloque.
En este caso, se imprime el texto <p>a</p> ya que $valor tiene el valor "a".
Ejemplo de bucle foreach (1) - Paso 7
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
[2] => ccc
)
</pre>
<p>a</p>
A continuación $valor pasa a tomar el valor siguiente de la matriz.
En este caso, la variable $valor toma el valor "bb".
Ejemplo de bucle foreach (1) - Paso 8
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
[2] => ccc
)
</pre>
<p>a</p>
<p>bb</p>
A continuación se ejecutan de nuevo las instrucciones del bloque.
En este caso, se imprime el texto <p>bb</p> ya que $valor tiene el valor "bb".
Ejemplo de bucle foreach (1) - Paso 9
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
[2] => ccc
)
</pre>
<p>a</p>
<p>bb</p>
A continuación $valor pasa a tomar el valor siguiente de la matriz.
En este caso, la variable $valor toma el valor "ccc".
Ejemplo de bucle foreach (1) - Paso 10
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
[2] => ccc
)
</pre>
<p>a</p>
<p>bb</p>
<p>ccc</p>
A continuación se ejecutan de nuevo las instrucciones del bloque.
En este caso, se imprime el texto <p>ccc</p> ya que $valor tiene el valor "ccc".
Ejemplo de bucle foreach (1) - Paso 11
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
[2] => ccc
)
</pre>
<p>a</p>
<p>bb</p>
<p>ccc</p>
A continuación $valor pasa a tomar el valor siguiente de la matriz.
Pero como en la matriz no quedan más valores, no se ejecutan las instrucciones del bloque de sentencias y el bucle se termina.
Ejemplo de bucle foreach (1) - Paso 12
<?php
$matriz = ["a", "bb", "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $valor) {
print "<p>$valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[0] => a
[1] => bb
[2] => ccc
)
</pre>
<p>a</p>
<p>bb</p>
<p>ccc</p>
<p>Final</p>
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime el párrafo final.
Ejemplo de bucle foreach (2)
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[2] => bb
[tres] => ccc
)
</pre>
<p>uno - a</p>
<p>2 - bb</p>
<p>tres - ccc</p>
<p>Final</p>
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle foreach (2) - Paso 1
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
Se ejecuta la primera instrucción del programa.
En este caso, se crea la matriz $matriz.
Ejemplo de bucle foreach (2) - Paso 2
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
A continuación se abre la etiqueta <pre>.
Ejemplo de bucle foreach (2) - Paso 3
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[2] => bb
[tres] => ccc
)
A continuación se imprimen los valores de la matriz $matriz.
Ejemplo de bucle foreach (2) - Paso 4
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[2] => bb
[tres] => ccc
)
</pre>
A continuación se cierra la etiqueta </pre>.
Ejemplo de bucle foreach (2) - Paso 5
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[2] => bb
[tres] => ccc
)
</pre>
A continuación se ejecuta el bucle. Las variables $indice y $valor van a ir tomando sucesivamente los valores del índice y del elemento de la matriz, respectivamente.
En este caso, la variable $indice toma el valor "uno" y $valor toma el valor "a".
Ejemplo de bucle foreach (2) - Paso 6
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[2] => bb
[tres] => ccc
)
</pre>
<p>uno - a</p>
A continuación se ejecutan las instrucciones del bloque.
En este caso, se imprime el texto <p>uno - a</p> ya que $indice tiene el valor "uno" y $valor tiene el valor "a".
Ejemplo de bucle foreach (2) - Paso 7
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[2] => bb
[tres] => ccc
)
</pre>
<p>uno - a</p>
A continuación $indice y $valor pasan a tomar los valores del elemento siguiente de la matriz.
En este caso, la variable $indice toma el valor "2" y $valor toma el valor "bb".
Ejemplo de bucle foreach (2) - Paso 8
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[2] => bb
[tres] => ccc
)
</pre>
<p>uno - a</p>
<p>2 - bb</p>
A continuación se ejecutan de nuevo las instrucciones del bloque.
En este caso, se imprime el texto <p>2 - bb</p> ya que $indice tiene el valor "2" y $valor tiene el valor "bb".
Ejemplo de bucle foreach (2) - Paso 9
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[2] => bb
[tres] => ccc
)
</pre>
<p>uno - a</p>
<p>2 - bb</p>
A continuación $indice y $valor pasan a tomar los valores del elemento siguiente de la matriz.
En este caso, la variable $indice toma el valor "tres" y $valor toma el valor "ccc".
Ejemplo de bucle foreach (2) - Paso 10
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[2] => bb
[tres] => ccc
)
</pre>
<p>uno - a</p>
<p>2 - bb</p>
<p>tres - ccc</p>
A continuación se ejecutan de nuevo las instrucciones del bloque.
En este caso, se imprime el texto <p>tres - ccc</p> ya que $indice tiene el valor "tres" y $valor tiene el valor "ccc".
Ejemplo de bucle foreach (2) - Paso 11
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[2] => bb
[tres] => ccc
)
</pre>
<p>uno - a</p>
<p>2 - bb</p>
<p>tres - ccc</p>
A continuación $indice y $valor pasan a tomar los valores del elemento siguiente de la matriz.
Pero como en la matriz no quedan más valores, no se ejecutan las instrucciones del bloque de sentencias y el bucle se termina.
Ejemplo de bucle foreach (2) - Paso 12
<?php
$matriz = ["uno" => "a", 2 => "bb", "tres" => "ccc"];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
[uno] => a
[2] => bb
[tres] => ccc
)
</pre>
<p>uno - a</p>
<p>2 - bb</p>
<p>tres - ccc</p>
<p>Final</p>
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime el párrafo final.
Ejemplo de bucle foreach (3)
<?php
$matriz = [];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
)
</pre>
<p>Final</p>
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y retroceso situados abajo a la derecha.
Ejemplo de bucle foreach (3) - Paso 1
<?php
$matriz = [];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
Se ejecuta la primera instrucción del programa.
En este caso, se crea la matriz $matriz.
Ejemplo de bucle foreach (3) - Paso 2
<?php
$matriz = [];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
A continuación se abre la etiqueta <pre>.
Ejemplo de bucle foreach (3) - Paso 3
<?php
$matriz = [];
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
)
A continuación se imprimen los valores de la matriz $matriz.
Ejemplo de bucle foreach (3) - Paso 4
<?php
$matriz = []
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
)
</pre>
A continuación se cierra la etiqueta </pre>.
Ejemplo de bucle foreach (3) - Paso 5
<?php
$matriz = []
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
)
</pre>
A continuación $indice y $valor deberían pasan a tomar los valores del primer elemento de la matriz.
Pero como en la matriz no hay valores, no se ejecutan las instrucciones del bloque de sentencias y el bucle se termina sin haber ejecutado ninguna vez las instrucciones del cuerpo del bucle..
Ejemplo de bucle foreach (3) - Paso 6
<?php
$matriz = []
print "<pre>\n";
print_r($matriz);
print "</pre>\n";
foreach ($matriz as $indice => $valor) {
print "<p>$indice - $valor</p>\n";
}
print "<p>Final</p>\n";
?>
<pre>
Array
(
)
</pre>
<p>Final</p>
Una vez terminado el bucle, se ejecuta la instrucción que sigue al bucle.
En este caso, imprime el párrafo final.
Por escribir