dasarloopPemula3 mnt baca

Loop for dan foreach

Pengulangan pasti: for untuk hitungan, foreach untuk menjelajah array.

Analogi: Mesin Fotokopi

Bayangkan kamu harus menulis nama 30 siswa di 30 sertifikat. Cara manual: tulis satu per satu, 30 kali. Cara pintar: pakai mesin fotokopi yang mengulang pekerjaan yang sama. Loop adalah mesin fotokopi itu: ia mengulang blok kode berkali-kali tanpa kamu menulis ulang. for dipakai saat kamu tahu berapa kali mengulang, foreach dipakai saat kamu ingin mengunjungi setiap isi sebuah daftar.

Kenapa Loop Ada?

Program nyata penuh pengulangan: menampilkan 100 produk dari database, mengirim email ke 50 pelanggan, membuat 12 baris tabel kalender. Menulis kodenya 100 kali adalah kegilaan dan mustahil dirawat. Loop mengubah "lakukan 100 kali" menjadi 3-4 baris kode, dan jumlah pengulangannya bisa berubah-ubah mengikuti data.

php
<?php
// Contoh 1: for, jumlah pengulangan sudah diketahui
// Struktur: for (mulai; syarat lanjut; langkah)
for ($i = 1; $i <= 5; $i++) {
    echo "Putaran ke-$i <br>";
}
// Hasil: Putaran ke-1 ... sampai Putaran ke-5

// Contoh nyata: tabel perkalian 3
echo "<table border='1'>";
for ($i = 1; $i <= 10; $i++) {
    $hasil = 3 * $i;
    echo "<tr><td>3 x $i</td><td>= $hasil</td></tr>";
}
echo "</table>";

Tiga bagian for selalu: inisialisasi ($i = 1, titik awal), kondisi ($i <= 5, "lanjut selama ini true"), update ($i++, langkah tiap putaran). Lupa salah satunya, loop bisa jalan selamanya (infinite loop).

php
<?php
// Contoh 2: foreach, menjelajahi setiap isi array
$siswa = ["Andi", "Budi", "Citra", "Dewi"];

foreach ($siswa as $nama) {
    echo "Halo, $nama! <br>";
}
// Hasil: menyapa keempat nama satu per satu

// foreach dengan kunci (key) juga
$nilai = ["Andi" => 85, "Budi" => 92, "Citra" => 78];
foreach ($nilai as $nama => $skor) {
    echo "$nama mendapat nilai $skor <br>";
}

foreach tidak peduli ada berapa isi array: 4 atau 4000, kodenya sama. Variabel $nama otomatis berganti setiap putaran menjadi isi berikutnya. Ini alasan foreach adalah loop yang paling sering dipakai di PHP, karena PHP adalah bahasa yang hidup dari array (data database selalu berbentuk array).

Kesalahan Umum Pemula

Salah: kondisi yang tidak pernah false (infinite loop).

php
<?php
for ($i = 1; $i <= 5; $j++) {   // SALAH: yang ditambah $j, bukan $i!
    echo $i;
}

$i tidak pernah berubah sehingga $i <= 5 selamanya true: browser hang. Benar: pastikan variabel di kondisi adalah yang diubah di bagian update, dan ketiganya konsisten ($i di semua posisi).

Salah: mengubah array yang sedang di-foreach.

php
<?php
foreach ($siswa as $nama) {
    $siswa[] = $nama . "!";   // JANGAN: menambah isi saat mengulanginya
}

Menambah/menghapus isi array di dalam foreach yang sama membuat perilakunya tidak terduga. Kalau perlu hasil transformasi, tampung ke array baru.

Salah: memakai for untuk array asosiatif.

php
<?php
$nilai = ["Andi" => 85, "Budi" => 92];
for ($i = 0; $i < count($nilai); $i++) {
    echo $nilai[$i];   // SALAH: kunci "Andi" bukan angka 0, 1, 2
}

for dengan indeks angka hanya cocok untuk array berindeks angka berurutan. Untuk array asosiatif (kunci berupa string), foreach adalah alat yang benar.

Pola Loop yang Paling Sering Dipakai

Tiga pola foreach menutup 90% kebutuhan nyata:

php
<?php
// 1. Tampilkan daftar (paling umum)
foreach ($produk as $p) {
    echo "<li>$p</li>";
}

// 2. Akumulasi (hitung total)
$total = 0;
foreach ($harga as $h) {
    $total += $h;
}

// 3. Transformasi ke array baru
$label = [];
foreach ($harga as $h) {
    $label[] = "Rp" . number_format($h);
}

// 4. Cari lalu berhenti (hemat!)
foreach ($siswa as $s) {
    if ($s["nama"] === "Sinta") {
        $ketemu = $s;
        break;   // jangan lanjut mengulang 999 data sisa
    }
}

Pola ke-4 penting untuk performa: tanpa break, loop terus berjalan meski target sudah ketemu. Untuk data ribuan baris, break menghemat waktu nyata.

Catatan teknis: Dua perintah pengendali loop: break menghentikan loop seketika (misalnya berhenti mencari saat barang ketemu), continue melompati sisa putaran ini dan lanjut ke putaran berikutnya (misalnya lewati data yang kosong). Keduanya dipakai di dalam for, foreach, while, semuanya.

Tantangan

Tabel perkalian

Dengan for bersarang, tampilkan tabel perkalian 1 sampai 5 dalam format HTML <table>. Tiap sel berisi hasil kali baris x kolom.