Setelah sebelumnya kita belajar tentang array pada PHP, kali ini kita akan membahas perulangan foreach pada PHP.
Perulangan foreach digunakan untuk melakukan perulangan nilai array, baik pada indexed array (array berindex) maupun associative array (array asosiatif). Disamping itu, foreach juga dapat digunakan untuk melakukan perulangan nilai objek (Class).
Key, Value, Indexed dan Associative Array
Sebelum kita membahas foreach pada PHP, penting untuk memahami tentang key dan value pada array, karena hal tersebut akan lebih mempermudah kita memahami perulangan foreach.
Seperti telah dijelaskan pada artikel Memahami Array Pada PHP, indexed array merupakan array dengan key berupa angka, misal:
$bulan = array('Januari', 'Februari', 'Maret')
Pada contoh diatas, value dari array adalah Januari, Februari, dan Maret, sedangkan key nya adalah 0, 1, dan 2. Karena key tidak didefinisikan, maka nilai key otomatis mulai dari 0
bentuk diatas sama dengan:
array(0=>'Januari',1=>'Februari',3=>'Maret')
sedangakan associative array merupakan array dengan key berupa nilai tertentu, misal:
array('jenis' => 'Mobil', 'merk' => 'Toyota', 'tipe' => 'Vios')
Pada contoh diatas, value dari array adalah Mobil, Toyota, dan Vios. Sedangkan key-nya adalah jenis, merk, dan tipe.
I. Cara Penulisan Foreach Pada PHP
Setelah kita faham tentang key dan value pada array, kita
Pada PHP foreach dapat ditulis dalam dua cara yaitu:
1 Mengabaikan nilai key
Pada cara ini, nilai key akan diabaikan/tidak digunakan:
foreach ($array as $value) {
statement;
}
Penjelasan:
$array
adalah nama variabelarray
yang akan kita gunakan untuk perulangan.$value
adalah nama variabel yang mewakili nilai/data dari array yang ada pada variabel $array. Kita bebas memberi nama variabel ini, umumnya variabel tersebut diberi nama$value
,$val
atau cukup$v
.
Cara ini bermanfaat jika kita hanya ingin menggunakan data value dari array dan mengabaikan data key nya
Contoh penggunaan:
$bulan = array ('Januari', 'Februari', 'Maret');
foreach ($bulan as $nama_bulan) {
echo $nama_bulan . '<br/>';
}
Hasil yang kita peroleh:
Januari Februari Maret
2 Menyertakan nilai key
Model kedua adalah dengan menyertakan nilai key, cara ini berlaku baik untuk indexed array maupun associative array. adapun format penulisannya adalah sebagai berikut:
foreach ($array as $key => $value) {
statement;
}
Penjelasan:
$array
adalah nama variabel array yang akan kita gunakan untuk perulangan.$key
merupakan nama variabel yang mewakili nilai index yang ada di dalam variabel $array. Kita bebas memberi nama variabel ini, umumnya variabel tersebut diberi nama$key
atau cukup$k
- Tanda => digunakan untuk menghubungkan antara
$key
dan$value
nya - Seperti pada model pertama, $value adalah nama variabel yang mewakili data value yang ada di dalam variabel $array. Kita juga bebas memberi nama variabel ini, umumnya nama yang digunakan adalah
$value
,$val
, atau cukup$v
Contoh penggunaan pada indexed array:
$bulan = array ('Januari', 'Februari', 'Maret');
foreach ($bulan as $index => $nama_bulan) {
echo ($index + 1) . '. ' . $nama_bulan . '<br/>';
}
Hasil yang kita peroleh:
1. Januari 2. Februari 3. Maret
Pada contoh diatas terlihat bahwa setiap array pasti memiliki key, sehingga meskipun key tersebut tidak kita tulis, key tersebut tetap ada dan bisa digunakan.
Contoh pada associative array:
$kendaraan = array('jenis' => 'Mobil', 'merk' => 'Toyota', 'tipe' => 'Vios');
foreach ($kendaraan as $key => $val) {
echo ucfirst($key) . ': ' . $val . '<br/>';
}
Hasil yang kita peroleh:
Jenis: Mobil Merk: Toyota Tipe: Vios
Pada contoh diatas, saya menggunakan fungsi ucfirst
untuk membuat huruf pertama dari key menjadi huruf besar.
3 Foreach didalam foreach (nested foreach)
Pada multidmensional array, kita akan sering membuat perulangan foreach didalam foreach.
Hati hati jika membuat perulangan dengan model seperti ini, karena sifat variabel dapat berubah ubah, maka, nilai variabel dari $key
dan $value
juga rawan berubah.
Oleh karena itu, sebisa mungkin memberi nama variabel untuk $key
dan $value
sesuai dengan isi datanya, sehingga memudahkan kita untuk membaca alur dari perulangan.
Contoh:
foreach ($array as $key => $val) {
statement;
foreach ($val as $key => $val) {
statement;
}
}
Pada contoh tersebut nilai variabel $key
pada foreach
yang pertama akan berubah karena ditimpa oleh nilai variabel $key
pada foreach ke dua.
II. Contoh Penggunaan Foreach Pada PHP
Pada PHP, foreach dapat digunakan untuk berbagai keperluan baik untuk backend maupun frontend, pada frontend, foreach digunakan salahsatunya untuk membuat element dropdown select.
Contoh kita ingin membuat dropdown nama bulan, dibanding menggunakan cara manual, akan jauh lebih efisien jika menggunakan perulangan foreach:
<?php
$bulan = array (1=>'Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember');
$opsi_bulan = '<select name="bulan">';
foreach ($bulan as $key => $value) {
$opsi_bulan .= '<option value="' . $key . '">' . $value . '</option>' . "\r\n";
}
$opsi_bulan .= '</select>';
echo $opsi_bulan;
Kode HTML yang kita peroleh:
<select name="bulan">
<option value="1">Januari</option>
<option value="2">Februari</option>
<option value="3">Maret</option>
<option value="4">April</option>
<option value="5">Mei</option>
<option value="6">Juni</option>
<option value="7">Juli</option>
<option value="8">Agustus</option>
<option value="9">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">Desember</option>
</select>
Output:
Contoh lain adalah untuk membuat tabel HTML
$no = 1;
$tabel = '
<table>
<tr>
<th>No</th>
<th>Bulan</th>
<th>Penjualan</th>
</tr>';
foreach ($sales as $bulan => $nilai) {
$tabel .= '
<tr>
<td>' . $no . '</td>
<td>' . $bulan . '</td>
<td>' . $nilai . '</td>
</tr>';
$no++;
}
$tabel .= '</table>';
echo $tabel;
Hasil:
<table>
<tr>
<th>No</th>
<th>Bulan</th>
<th>Penjualan</th>
</tr>
<tr>
<td>1</td>
<td>Januari</td>
<td>5.500</td>
</tr>
<tr>
<td>2</td>
<td>Februari</td>
<td>7.500</td>
</tr>
<tr>
<td>3</td>
<td>Maret</td>
<td>11.500</td>
</tr>
<tr>
<td>4</td>
<td>April</td>
<td>8.800</td>
</tr>
<tr>
<td>5</td>
<td>Mei</td>
<td>7.500</td>
</tr>
</table>
Cara Lain
Disamping menggunakan cara diatas, perulangan pada array juga dapat dilakukan menggunakan perulangan for. Pembahasan tentang perulangan for dapat dibaca pada artikel: Memahami Perulangan For Pada PHP
Demikian pembahasan tentang perulangan foreach pada PHP, semoga bermanfaat.
Subscibe Now
Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com
16 Feedback dari pembaca
thx membantu
berbagi ilmu 🙂
kang di contoh terakhir dapet $sales dari mana kang?
Itu hanya contoh saja mas, datanya bisa diambil dari database
Terima kasih pak sangat membantu sekali contoh nya. dan langsung work hehe
tanya sedikit pak, saya juga membuat halaman EDIT, juga dengan script milik bapa yg ini :
nah jika dihalaman EDIT yg saya buat itu saya ingin agar yang ter’selected pertama di kolom option value nya adalah data yang sesuai dengan yg ada di table database, namun pilihan yg lain juga masih tetap muncul. ditambahkan pke apa yaa source code nya pak? terima kasih pak..
Tinggal diberi atribut selected mas, misal:
terima kasih pak agus atas fast response nya..
kemarin sdh saya cb script yg seperti bapak diatas.. tp ketika buka halaman edit, di kolom nya yg ter-select tetap bukan pilihan yg sesuai dengan value di database, melainkan tetap ter-select ke pilihan yg urutan pertama.
bisa dibantu lagi pak mohon pencerahannya klo ada yg kurang tepat dimana yaa?? makasih byk pak agus sebelumnya
Seharusnya bisa mas, script nya seperti apa mas?
permisi pak Agus mau tanya, misal kita mau buat loop yang ingin dibuat terus datanya ngambil dari field normalisasi seperti gambar dalam link ini
https://drive.google.com/file/d/1Ni9pZxOLZ8qd88RWmz5t-VrDVixYgRPN/view?usp=sharing
$conn = mysqli_connect(‘db_host’,’db_user’,’db_pass’,’db_name’);
$query = mysqli_query($conn, ‘SELECT normalisasi FROM data);
$data = mysqli_fetch_assoc($query);
lanjutan buat loopnya seperti apa ya pak? Terimakasih sebelumnya pak
Loopnya seperti ini mas:
Kalau misalnya, saya punya data array nama isi 6 data, pengen di tampilan di table tiap 3 data, jadi 123, 456? jadi gimana tuh pak agus
Bisa macam macam caranya, bisa dibuat angka berurutan, 123 setelah sampai ketiga direset lagi, atau bisa menggunakan modulus, jika index array habis dibagi 3, split datanya
Assalamualaikum mas,
Mohon pencerahannya mas,
Jika ada 2 tabel seperti gambar pada link berikut :
https://drive.google.com/file/d/1fljqfHBPtjTQ_Mtqbg-eU8gdO_b32Inj/view?usp=sharing
Menggunakan form input select multiple option seperti gambar pada link :
https://drive.google.com/file/d/1dJfTC2WOW6G_5DCiPhItTI_6GBI_ZmG8/view?usp=sharing
Hasilnya ingin masuk ke tabel seperti gambar pada link berikut :
https://drive.google.com/file/d/1wbUBNr4bm3v1K-LE6svxdDBuNOOn6UUL/view?usp=sharing
Apakah source code seperti pada gambar link berikut bisa di modif
https://drive.google.com/file/d/19Yk3MjXNv774hAfhMi7op5e6ahtecxBJ/view?usp=sharing
atau mungkin jika salah source code aksi input data nya seperti apa ? apakah bisa menggunakan foreach ? kalau bisa contoh source code nya bagaimana? disesuaikan dengan kasus seperti ini.
terimakasih mas, ditunggu ilmu nya,
wassalamualaikum
Waalaykumsalam mas
Iya, bisa dimodif source code nya
Mas mau tanya, kalau perulangan daam perulangan dengan jumlah data yang besar. bagaimana mengatasi nya ya? soalnya berat banget..
Data semakin besar proses semakin berat mas apalagi kalau data tersebut diambil dari database, solusinya bisa dicoba menggunakan pagination, jika data ditampilkan dalam bentuk tabel bisa coba menggunakan library datatables