> Faqs > Bucle foreach PHP ¿cómo saber si es el último elemento de un array?

Bucle foreach PHP ¿cómo saber si es el último elemento de un array?

Estoy realizando un recorrido a un array con PHP. Usando el bucle foreach por mayor comodidad.

foreach($productos as $producto) {
    // Aquí quisiera poner un separador, para todos los productos excepto el último.
}

La idea es detectar cuándo es el último elemento del array, porque en ese caso no quiero mostrar cierta salida. El caso es que el bucle foreach me devuelve el elemento, pero no sé si ese es el último o no.

Respuestas

En realidad el bucle foreach sí que te da el índice del elemento del array, aunque tienes que especificar que lo deseas recibir en la cabecera del bucle.

Una vez tienes el índice, solamente tienes que comprobar que no sea igual al número de elementos del array menos 1.

Lo harías de esta manera:

foreach($productos as $index => $producto) {
  // detectar todos menos el último:
  if($index != count($productos) - 1) {
    // Este código se ejecutará para todos menos el último
    echo " --- ";
  }
}
Alfonso
289 11 19 16
$productos = array ("a", "b", "c");

$lista = "";
foreach($productos as $producto) {
    $lista .= $producto . ", ";
}
$lista = rtrim ($lista, ", "); // quitar la coma y espacio final

echo $lista;
René
5 1