🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

[Introducción a PHP] Cómo Mostrar Dinámicamente una Lista de Noticias/Avisos con el Bucle foreach

Es común ver listas de "Noticias" o "Avisos" en los sitios web, ¿verdad? Es una molestia tener que actualizar manualmente el HTML cada vez que se añade nueva información. En realidad, utilizando el bucle foreach de PHP, puedes automatizar esta tediosa tarea y crear fácilmente una lista dinámica que siempre muestre la información más reciente.

En este artículo, explicaremos los fundamentos y las aplicaciones del bucle `foreach` de PHP utilizando un ejemplo práctico de una lista de avisos, para que incluso los principiantes en programación puedan experimentar que "funcione" simplemente copiando y pegando. ¡Vamos a dominar juntos el proceso de tomar datos almacenados en un array uno por uno y mostrarlos como una lista HTML!

Para preparar tu entorno para ejecutar PHP (entorno de desarrollo), si aún no has configurado XAMPP, por favor consulta ¡[Introducción a PHP] Guía completa para descargar e instalar XAMPP!. ¡Después de la instalación, simplemente coloca tu archivo PHP en la carpeta especificada (como `htdocs`) y estarás listo!

1. ¡Lo más básico! Arrays en PHP y el bucle foreach

Primero, para entender qué hace `foreach`, comencemos con su compañero, el "array".

Un array es como una caja que puede almacenar múltiples valores juntos. Por ejemplo, si quieres gestionar la información de los avisos como conjuntos de "fecha" y "título", puedes crear un array como este:

<?php
// Array que almacena la información de las noticias
$news_items = [
  [
    "date" => "2025-07-03",
    "title" => "Aviso de Cierre por Vacaciones de Verano"
  ],
  [
    "date" => "2025-07-01",
    "title" => "Hemos lanzado el nuevo servicio '〇〇'"
  ],
  [
    "date" => "2025-06-20",
    "title" => "Hemos renovado nuestro sitio web"
  ]
];

// Comprobar el contenido del array (para depuración)
print_r($news_items);
?>

La función del bucle `foreach` es sacar los elementos de esta "caja" llamada array uno por uno y procesarlos. La sintaxis es muy sencilla:

foreach (array as $variable_temporal_para_el_elemento) { ...procesamiento... }

Usando esta sintaxis, intentemos sacar solo los títulos del array anterior en orden y mostrarlos.

<?php
$news_items = [
  ["date" => "2025-07-03", "title" => "Aviso de Cierre por Vacaciones de Verano"],
  ["date" => "2025-07-01", "title" => "Hemos lanzado el nuevo servicio '〇〇'"],
  ["date" => "2025-06-20", "title" => "Hemos renovado nuestro sitio web"]
];

// Sacar cada aviso del array uno por uno
foreach ($news_items as $item) {
  // Mostrar el título del aviso extraído
  echo $item['title'] . "\n";
}
?>

Como puedes ver, `foreach` repite automáticamente el proceso hasta que no quedan más elementos en el array. Este es el corazón de la generación de listas dinámicas.

2. ¡A la práctica! Creando una lista de avisos con foreach

Ahora vamos al tema principal. Usemos el array y el bucle `foreach` de antes para crear una lista de avisos en formato HTML que se pueda mostrar en una página web. El siguiente código es la forma más básica que combina HTML y PHP. Si lo copias y pegas en un archivo, podrás verlo en tu navegador.

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Lista de Avisos</title>
    <style>
        body { font-family: sans-serif; line-height: 1.6; padding: 20px; }
        .news-list { list-style: none; padding: 0; border-top: 1px solid #ccc; }
        .news-list li { padding: 15px 10px; border-bottom: 1px solid #ccc; }
        .news-date { font-weight: bold; margin-right: 1em; color: #555; }
    </style>
</head>
<body>

    <h1>Avisos</h1>

    <?php
    // Preparar la información de los avisos como un array
    $notices = [
        [
            "date" => "2025-07-03",
            "title" => "Aviso de Cierre por Vacaciones de Verano"
        ],
        [
            "date" => "2025-07-01",
            "title" => "Hemos lanzado el nuevo servicio '〇〇'"
        ],
        [
            "date" => "2025-06-20",
            "title" => "Hemos renovado nuestro sitio web"
        ]
    ];
    ?>

    <ul class="news-list">
        <?php foreach ($notices as $notice): ?>
            <li>
                <span class="news-date"><?php echo htmlspecialchars($notice['date']); ?></span>
                <span class="news-title"><?php echo htmlspecialchars($notice['title']); ?></span>
            </li>
        <?php endforeach; ?>
    </ul>

</body>
</html>

El punto clave de este código es que el bucle `foreach` se ejecuta dentro de las etiquetas `