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

[PHP สำหรับผู้เริ่มต้น] วิธีแสดงรายการข่าวสาร/ประกาศแบบไดนามิกด้วยลูป foreach

คุณมักจะเห็นรายการ "ข่าวสาร" หรือ "ประกาศ" ในเว็บไซต์ใช่ไหมครับ? การอัปเดต HTML ด้วยตนเองทุกครั้งที่มีข้อมูลใหม่เพิ่มเข้ามานั้นเป็นเรื่องยุ่งยาก แต่จริงๆ แล้ว ด้วยการใช้ ลูป foreach ของ PHP คุณสามารถทำให้งานที่น่าเบื่อนี้เป็นอัตโนมัติและสร้างรายการแบบไดนามิกที่แสดงข้อมูลล่าสุดได้ตลอดเวลาอย่างง่ายดาย

ในบทความนี้ เราจะอธิบายวิธีใช้ลูป `foreach` ของ PHP ตั้งแต่พื้นฐานไปจนถึงการประยุกต์ใช้ โดยใช้ตัวอย่างการแสดงรายการประกาศที่ใช้งานได้จริง เพื่อให้แม้แต่ผู้เริ่มต้นเขียนโปรแกรมก็สามารถสัมผัสประสบการณ์ "โค้ดที่ใช้งานได้" เพียงแค่คัดลอกและวาง มาฝึกฝนขั้นตอนการดึงข้อมูลที่เก็บไว้ในอาร์เรย์ทีละรายการและแสดงผลเป็นรายการ HTML ไปด้วยกันครับ!

สำหรับการเตรียมตัวเพื่อรัน PHP (สภาพแวดล้อมการพัฒนา) หากคุณยังไม่ได้ติดตั้ง XAMPP โปรดอ้างอิงจาก [PHP สำหรับผู้เริ่มต้น] คู่มือฉบับสมบูรณ์เกี่ยวกับการดาวน์โหลดและติดตั้ง XAMPP! หลังจากติดตั้งแล้ว เพียงแค่วางไฟล์ PHP ของคุณในโฟลเดอร์ที่กำหนด (เช่น `htdocs`) ก็พร้อมใช้งานแล้วครับ!

1. พื้นฐานสำคัญ! อาร์เรย์ใน PHP และลูป foreach

ก่อนอื่น เพื่อที่จะเข้าใจว่า `foreach` ทำอะไร เรามาเริ่มจากคู่หูของมัน นั่นก็คือ "อาร์เรย์" กันก่อนครับ

อาร์เรย์ ก็เหมือนกับกล่องที่สามารถเก็บค่าได้หลายค่าไว้ด้วยกัน ตัวอย่างเช่น ถ้าคุณต้องการจัดการข้อมูลประกาศเป็นชุดของ "วันที่" และ "หัวข้อ" คุณสามารถสร้างอาร์เรย์ได้ดังนี้:

<?php
// อาร์เรย์ที่เก็บข้อมูลข่าวสาร
$news_items = [
  [
    "date" => "2025-07-03",
    "title" => "ประกาศวันหยุดฤดูร้อน"
  ],
  [
    "date" => "2025-07-01",
    "title" => "เปิดตัวบริการใหม่ '〇〇'"
  ],
  [
    "date" => "2025-06-20",
    "title" => "เว็บไซต์ของเราได้รับการปรับปรุงใหม่"
  ]
];

// ตรวจสอบเนื้อหาของอาร์เรย์ (สำหรับดีบัก)
print_r($news_items);
?>

หน้าที่ของลูป `foreach` คือการดึงข้อมูลออกจาก "กล่อง" ที่เรียกว่าอาร์เรย์นี้ทีละรายการและนำไปประมวลผล ไวยากรณ์ของมันเรียบง่ายมากครับ

foreach (อาร์เรย์ as ตัวแปรสำหรับเก็บข้อมูลที่ดึงออกมาชั่วคราว) { ...การประมวลผล... }

เรามาลองใช้ไวยากรณ์นี้เพื่อดึงเฉพาะหัวข้อจากอาร์เรย์ก่อนหน้านี้มาแสดงผลตามลำดับกันครับ

<?php
$news_items = [
  ["date" => "2025-07-03", "title" => "ประกาศวันหยุดฤดูร้อน"],
  ["date" => "2025-07-01", "title" => "เปิดตัวบริการใหม่ '〇〇'"],
  ["date" => "2025-06-20", "title" => "เว็บไซต์ของเราได้รับการปรับปรุงใหม่"]
];

// ดึงข้อมูลข่าวสารจากอาร์เรย์ทีละรายการ
foreach ($news_items as $item) {
  // แสดงหัวข้อของข่าวที่ดึงออกมา
  echo $item['title'] . "\n";
}
?>

จะเห็นได้ว่า `foreach` จะทำการวนซ้ำโดยอัตโนมัติจนกว่าจะไม่มีข้อมูลเหลือในอาร์เรย์ นี่คือหัวใจสำคัญของการสร้างรายการแบบไดนามิกครับ

2. ภาคปฏิบัติ! สร้างรายการประกาศด้วย foreach

และแล้วก็มาถึงส่วนสำคัญครับ เราจะใช้อาร์เรย์และลูป `foreach` จากก่อนหน้านี้เพื่อสร้างรายการประกาศในรูปแบบ HTML ที่สามารถแสดงผลบนหน้าเว็บได้ โค้ดด้านล่างนี้เป็นรูปแบบพื้นฐานที่สุดที่ผสมผสานระหว่าง HTML และ PHP คุณสามารถคัดลอกและวางลงในไฟล์เพื่อดูผลลัพธ์ในเบราว์เซอร์ได้เลย

<!DOCTYPE html>
<html lang="th">
<head>
    <meta charset="UTF-8">
    <title>รายการประกาศ</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>ประกาศ</h1>

    <?php
    // เตรียมข้อมูลประกาศในรูปแบบอาร์เรย์
    $notices = [
        [
            "date" => "2025-07-03",
            "title" => "ประกาศวันหยุดฤดูร้อน"
        ],
        [
            "date" => "2025-07-01",
            "title" => "เปิดตัวบริการใหม่ '〇〇'"
        ],
        [
            "date" => "2025-06-20",
            "title" => "เว็บไซต์ของเราได้รับการปรับปรุงใหม่"
        ]
    ];
    ?>

    <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>

จุดสำคัญของโค้ดนี้คือการวนลูป `foreach` ภายในแท็ก `