# Perulangan degan \`Foreach\`

`foreach` loop adalah jenis perulangan yang dirancang khusus untuk mengulangi setiap elemen dalam array atau objek. `foreach` loop sangat berguna karena mempermudah akses dan manipulasi setiap elemen tanpa harus menggunakan indeks secara manual.

**Sintaks `foreach` Loop**

Sintaks dasar dari `foreach` loop adalah sebagai berikut:

```php
foreach ($array as $value) {
    // Blok kode yang akan dijalankan untuk setiap elemen array
}
```

Ada juga bentuk lain yang memungkinkan akses ke kunci (key) dari elemen array:

```php
foreach ($array as $key => $value) {
    // Blok kode yang akan dijalankan untuk setiap elemen array
}
```

* **$array**: Array yang akan diulang.
* **$value**: Nilai dari elemen array saat ini.
* **$key**: Kunci dari elemen array saat ini (opsional).

**Penjelasan dengan Contoh**

**Contoh: Menampilkan Setiap Nilai dalam Array**

```php
$buah = ["apel", "pisang", "jeruk"];

foreach ($buah as $item) {
    echo "Buah: $item <br>";
}
```

**Penjelasan:**

1. **Array**: `$buah` berisi daftar buah-buahan.
2. **`foreach` Loop**: Mengulangi setiap elemen dalam array `$buah`.
3. **Blok Kode**: `echo "Buah: $item <br>";`
   * Setiap elemen array dicetak dengan kata "Buah:" diikuti oleh nilai elemen tersebut.

Output:

```makefile
Buah: apel
Buah: pisang
Buah: jeruk
```

**Contoh: Menampilkan Nilai dan Kunci dari Array Asosiatif**

```php
$harga_buah = ["apel" => 10000, "pisang" => 5000, "jeruk" => 7000];

foreach ($harga_buah as $buah => $harga) {
    echo "Buah: $buah, Harga: $harga <br>";
}
```

**Penjelasan:**

1. **Array Asosiatif**: `$harga_buah` berisi daftar buah-buahan dengan harga masing-masing.
2. **`foreach` Loop**: Mengulangi setiap elemen dalam array `$harga_buah`.
3. **Blok Kode**: `echo "Buah: $buah, Harga: $harga <br>";`
   * Setiap elemen array dicetak dengan kata "Buah:" diikuti oleh kunci elemen tersebut, dan "Harga:" diikuti oleh nilai elemen tersebut.

Output:

```yaml
Buah: apel, Harga: 10000
Buah: pisang, Harga: 5000
Buah: jeruk, Harga: 7000
```

**Kapan Menggunakan `foreach` Loop?**

1. **Array**: `foreach` loop sangat ideal ketika Anda memiliki array yang ingin diulangi tanpa peduli indeksnya.
2. **Array Asosiatif**: Sangat berguna untuk array asosiatif di mana Anda ingin mengakses kunci dan nilai dari setiap elemen.

**Keuntungan Menggunakan `foreach` Loop**

1. **Kemudahan Penggunaan**: `foreach` loop lebih mudah dibaca dan ditulis dibandingkan loop lain saat bekerja dengan array.
2. **Mengurangi Kesalahan**: Tidak perlu mengelola indeks secara manual, sehingga mengurangi kemungkinan kesalahan.
3. **Kinerja**: `foreach` loop dioptimalkan untuk iterasi array dalam PHP, sehingga sering kali lebih cepat dibandingkan loop lainnya.

**Tips dan Praktik Terbaik**

1. **Pastikan Array Tidak Kosong**: Sebelum menggunakan `foreach`, pastikan array tidak kosong untuk menghindari iterasi yang tidak diperlukan.
2. **Gunakan Nama Variabel yang Jelas**: Gunakan nama variabel yang jelas dan deskriptif untuk kunci dan nilai dalam loop untuk meningkatkan keterbacaan kode.
3. **Modifikasi Array dalam `foreach`**: Jika Anda perlu memodifikasi elemen array, pertimbangkan untuk menggunakan referensi.

**Contoh: Modifikasi Elemen Array Menggunakan Referensi**

```php
$angka = [1, 2, 3];

foreach ($angka as &$nilai) {
    $nilai *= 2;
}
unset($nilai); // pastikan untuk menghapus referensi
print_r($angka);
```

Output:

```css
cssCopy codeArray ( [0] => 2 [1] => 4 [2] => 6 )
```

#### Contoh Aplikasi Lain dari `foreach` Loop

**Menghitung Total Nilai dalam Array**

```php
$nilai = [90, 80, 70, 85, 75];
$total = 0;

foreach ($nilai as $angka) {
    $total += $angka;
}
echo "Total nilai: $total";
```

Output:

```mathematica
mathematicaCopy codeTotal nilai: 400
```

**Mengubah Nilai dalam Array**

```php
$harga = [10000, 20000, 15000];
$diskon = 0.1;

foreach ($harga as &$h) {
    $h -= $h * $diskon;
}
unset($h); // pastikan untuk menghapus referensi
print_r($harga);
```

Output:

```css
cssCopy codeArray ( [0] => 9000 [1] => 18000 [2] => 13500 )
```

**Memformat dan Mencetak Data dari Array Multidimensi**

```php
$data = [
    ["nama" => "John", "umur" => 25],
    ["nama" => "Jane", "umur" => 30],
    ["nama" => "Doe", "umur" => 22]
];

foreach ($data as $orang) {
    echo "Nama: " . $orang["nama"] . ", Umur: " . $orang["umur"] . "<br>";
}
```

Output:

```yaml
Nama: John, Umur: 25
Nama: Jane, Umur: 30
Nama: Doe, Umur: 22
```

Dengan memahami dan menggunakan `foreach` loop, Anda dapat mengelola array dengan lebih efisien dan menulis kode yang lebih bersih serta mudah dibaca.
