Setelah mempelajari perulangan dasar seperti for, while, dan do-while, PHP menyediakan perulangan khusus untuk array, yaitu perulangan foreach. Dalam tutorial kali ini kita akan mempelajari Pengertian dan Cara Penulisan Perulangan Foreach dalam PHP.
Pengertian Perulangan Foreach dalam PHP
Array merupakan tipe data yang sering digunakan dalam membuat program menggunakan PHP. Kemampuan array dalam menyimpan banyak data dalam satu variabel akan sangat berguna untuk menyederhanakan dan menghemat penggunaan variabel.
Untuk menampilkan dan memproses data dari array, kita bisa memanfaatkan perulangan for, seperti contoh berikut ini:
<?php $nama = array("Andri","Joko","Sukma","Rina","Sari"); for ($i=0; $i <5; $i++) { echo "$nama[$i]"; echo "<br />"; } ?>
Contoh diatas membuat perulangan for sebanyak 5 kali, dengan variabel counter $i dimulai dari angka 0 (karena index array dimulai dari angka 0).
Namun sebagai cara alternatif untuk menampilkan array, saya akan mengubah kode diatas dengan menggunakan perulangan foreach:
<?php $nama = array("Andri","Joko","Sukma","Rina","Sari"); foreach ($nama as $val) { echo "$val"; echo "<br />"; } ?>
Perulangan foreach diatas akan menampilkan semua isi array dengan perintah yang lebih singkat daripada menggunakan perulangan for.
Cara Penulisan Perulangan Foreach dalam PHP
Perulangan foreach merupakan perulangan khusus untuk pembacaan nilai array. Seperti yang telah kita bahas pada tutorial tentang tipe data array: Mengenal Tipe Data Array dan Cara Penulisan Array dalam PHP, setiap array memiliki pasangan key dan value. Key adalah ‘posisi’ dari array, dan value adalah ‘isi’ dari array.
Format dasar perulangan foreach adalah:
foreach ($nama_array as $value) { Â Â Â statement (...$value...) }
- $nama_array adalah nama dari array yang telah didefenisikan sebelumnya.
- $value adalah nama ‘variabel perantara’ yang berisi data array pada perulangan tersebut. Anda bebas memberikan nama untuk variabel perantara ini, walaupun pada umumnya banyak programmer menggunakan $value, atau $val saja.
Berikut adalah contoh perulangan foreach sebelumnya:
<?php $nama = array("Andri","Joko","Sukma","Rina","Sari"); foreach ($nama as $val) { echo "$val"; Â echo "<br />"; } ?>
Pada contoh diatas, saya mendefenisikan variabel array $nama dengan format singkat, dan tanpa mendefenisikan key secara tertulis. Variabel $val merupakan variabel perantara dalam contoh diatas. Perulangan tersebut akan diulang sebanyak data yang terdapat di dalam array, sehingga kita tidak perlu harus menghitung seberapa banyak perulangan yang harus dilakukan.
Jika anda membutuhkan nilai key dari array untuk dapat diproses, maka PHP menyediakan bentuk kedua dari perulangan foreach, dengan format dasar penulisan sebagai berikut:
foreach ($nama_array as $key => $value) { Â Â Â statement ($key...$value...) }
Perbedaan dengan format sebelumnya, disini PHP menyediakan variabel perantara kedua, yaitu variabel $key. Variabel $key ini menampung nilai key dari array.
Berikut adalah contoh penggunaannya:
<?php $nama = array( Â Â Â Â Â Â Â 1=>"Andri", Â Â Â Â Â Â Â 6=>"Joko", Â Â Â Â Â Â Â 12=>"Sukma", Â Â Â Â Â Â Â 45=>"Rina", Â Â Â Â Â Â Â 55=>"Sari"); foreach ($nama as $kunci =>$isi) { echo "Urutan ke-$kunci adalah $isi"; echo "<br />"; } ?>
Variabel array $nama saya defenisikan menggunakan key yang berbeda-beda. Pada perulangan foreach, saya membuat variabel perantara $kunci =>$isi, sehingga didalam perulangan, variabel $kunci akan berisi key dari array, dan variabel $isi akan berisi nilai dari array.
Proses menampilkan dan memproses array akan lebih mudah dengan menggunakan perulangan foreach dibandingkan perulangan dasar seperti for. Terlebih lagi kita tidak perlu mencari tau seberapa banyak perulangan harus dilakukan, karena perulangan foreach akan otomatis berhenti pada data terakhir dari array.
Alhamdulillah, akhirnya paham juga apa itu key dan value, ternyata posisi array dan isi arraynya
Terimakasih :)
Terimakasih juga atas kunjungannya gan…
mauu tanya kalo perulangan untuk sistem pakar bagaimana ya, yang Learning vector
Wah, maaf gan.. saya belum bisa bantu, karena pertanyaannya terlalu spesifik dan saya juga kurang paham tentang learning vector. Mudah2an rekan-rekan yang lain bisa membantu.
Terima kasih artikelnya bermanfaat sekali :)
Terimakasih juga kunjungannya gan.. :)
Kalau dari chechkbox kykmana om untuk menggunakan perulanganya ??
belum mudeng :(
makasi banyak gan ane sangat terbantu, dimohon diperbanyak contoh2nya gan dan materinya seperti ajax,jquery,bootstrap . thx
Ditunggu saja updatenya y gan.. :)
Mau nanya ni mas , kalau seumpama isi dari $nama = … itu diisi dengan kode php juga bisa ga,
misalnya $nama = begitulah kira2.Kalau bisa caranya bagaimana? ,Terima kasih
Dicoba aja bang bahrul, $nama = $_POST[‘nama’];
thanks sangat bermanfaat
Terimakasih gan :)
Om, berarti untuk foreach akan mengulang sebanyak data yang ada ya.. atau tidak bisa dibatasi gitu maksudnya..
Iya gan. foreach adalah perulangan khusus untuk array,
kalau ingin dibatasi jumlah perulangannya bisa disisipkan kondisi IF untuk menentukan kapan harus berhenti,
atau bisa juga menggunakan perulangan ‘biasa’ seperti for atau while
nanya lg ni pak.. :) sy pny data json, singkatnya sy akses spt ini :
setelah googling bisa warning nya dihilangkan dengan ‘foreach ((array)$hasil as $rs)’, tp data saya tetap g muncul, dan setelah googling lagi ternyata salah satu penyebabnya bisa dikarenakan data null, nah data saya memang ada colomn yg isinya null… gimana solusinya agar data null, tetap sbg array dan bisa ditampilin melalui foreach….. sory kepanjangan, terima kasih banyak….
Setelah saya coba cari, letak pemasalahannya ada di fungsi json_decode(). Fungsi ini akan mengembalikan nilai NULL jika terdapat key null pada object json-nya:
Sehingga pada foreach loop akan keluar error Invalid argument supplied for foreach(), karena yang mau di loop adalah NULL, bukan array.
Tetapi nilai NULL diperbolehkan dalam object json sepanjang bukan pada key-nya:
Solusi paling baik memang mengubah output json sebelum dibaca oleh fungsi file_get_contents. Namun jika hal ini tidak bisa dilakukan, kita terpaksa harus men-‘filter’ object json untuk menghapus key NULL. Sebagai contoh, dibawah ini saya menggunakan fungsi pencarian regular expression untuk mencari key NULL dan menghapusnya:
Setelah tidak ada masalah dengan json, selanjutnya kita bisa menampilkan data array dengan foreach loop.
Semoga bisa membantu :)
ok mas. terimakasih telah share ilmu. salam
Gan kok wewnya gak sempurna ya klo dibuka pke opera mini? Kodingnya kebaca
Bisa ditampilkan print screennya gan? Saya coba akses dari browser android masih bisa tampil.
Kodingnya memang akan tampil memanjang di web browser smartphone (harus di geser2),
karena akan susah dipahami kalau kode program juga ikut pindah2 ke baris baru (responsive)
Bagus gan, lengkap nih tentang foreach. Baca juga perintah foreach di blogku Perintah Foreach Untuk Perulangan Array di PHP | Sinau Coding
mau tanya yang input array dengan php mas..??
akhirnya saya tau setelah membaca tutor ini…
Ditunggu ebook php nya
Terimakasih untuk dukungannya gan.. mudah2an saya bisa cepat menyelesaikan eBook PHP :)
Sy suka blog ini krn admin sngat proaktif menanggapi setiap pertanyaan yg disampaikan trkait msalah yg dibahas.trims..
Terimakasih mas,.. Saat ini saya memang fulltime mengelola duniailkom. Sedapat mungkin setiap pertanyaan bisa dibalas… kecuali jika saya sendiri udah g tau gimana jawabnya hehe….
mas mau nanyak,,
saya bikin insert data checbox dengan array alhmdlh lancar tetapi ketika sy bikin updatenya kena data yang didatabase tidak berubah sama sekali padahal tidak ada notifikasi error?
ini sy paste di pastebin,,
makasih sebelumnya,, salam super duniailkom (Y)
mas mau nanyak,,
saya bikin insert data checbox dengan array alhmdlh lancar tetapi ketika sy bikin updatenya kena data yang didatabase tidak berubah sama sekali padahal tidak ada notifikasi error?
ini sy paste di pastebin,,
makasih sebelumnya,, salam super duniailkom (Y)
pastebin.com/g91XMCJ0
Mas, error :
PHP Warning: Invalid argument supplied for foreach() … eval()'d
Code :
<?php
$url = "http://www2.e-solat.gov.my/xml/today/?zon=jhr02";
if (($xml = @simplexml_load_file($url)) === FALSE) {
echo "Error loading XML\n";
die;
}
$data = json_decode(json_encode((array) $xml->channel), 1);
?>
<style type="text/css">
thead th {
background-color: #000;
font : normal 14px/150% Arial;
}
td {
padding: 3px;
font : normal 14px/150% Arial;
}
td.title {
width: 70px;
}
td.desc {
width: 50px;
text-align: center;
}
tr:nth-child(odd) {
background:#06205c;
color: white;
}
tr:nth-child(even) {
color:black;
}
tr:hover {
font-color: black;
background-color: #d61919;
}
</style>
<table width="100%" align="center" border="0">
<tr><td class="desc" align="center"><b><?php echo $data['description']; ?></b>
<br />
<b><?php
$timezone = '+8:00';
$timezone = preg_replace('/[^0-9]/', '', $timezone) * 36;
date_default_timezone_set('Asia/Kuala_Lumpur');
echo date('D d M Y H:i A');
?></b>
</td></tr>
</table>
<table width="100%" align="center" border="0">
<tbody>
<?php foreach ($data['item'] as $key => $value) : ?>
<tr>
<td class="title"><b><?php echo $value['title']; ?></b></td>
<td class="desc"><?php echo date('g:i', strtotime($value['description'])); ?></td>
</tr>
<?php endforeach;?>
</tbody>
</table>
—————————–
adakah error pada $data = json_decode(json_encode((array) $xml->channel), 1); ?
Bisa jadi mas, soalnya variabel $data lah yang akan diinput kedalam perulangan foreach (yang menghasilkan error). Jadi harus diperiksa lagi apakah hasil dari json-nya sudah sesuai dengan format atau belum.
Kak, misalkan kita ingin agar di browser ditampilkan sampai di nama Rina;
jika penulisan kodenya seperti di bawah ini, memang akan ditampilkan sampai nama Rina.
yang mau saya tanyakan,
bagaimana penulisan kodenya, jika seandainya kita tidak tahu nama Rina ada di array keberapa dan tidak tahu kalau nama Rina terletak sebelum nama Sari (contoh: daftar 25 nama mahasiswa, asumsi tidak ada nama yang sama)?
*mungkin lebih seperti search
<?php
$nama = array("Andri","Joko","Sukma","Rina","Sari");
foreach ($nama as $val)
{
if ($val=="Sari")
{
break;
}
echo "$val";
echo "<br />";
}
?>
Sekarang tujuan kode programnya untuk apa gan? kalau untuk pencarian di dalam array, PHP menyediakan fungsi array_search() dan in_array(). Penjelasannya belum sempat saya buat, tapi bisa baca di http://php.net/manual/en/function.array-search.php dan http://php.net/manual/en/function.in-array.php
gan kok foreach nya saya kasih akhiran ; data yang keluar cuma satu, akan tetapi apabila tdk memakai akhiran ; data muncul semua…. itu kenapa ya gan
Dalam semua bahasa pemrograman komputer, setiap tanda memiliki makna gan, baik itu titik, titik koma, atau koma, jika tidak ditulis akan menjadi masalah. Jadi penggunaannya harus sesuai seperti yang dijelaskan disini gan..
wah keren nih Duniailkom :D
Jelas sekali penjelasannya.
Adminnya juga ramah..
Makasih sob (y) ^_^
Sama2 gan, semoga bermanfaat :)
Mas kalau misalnya nanti outputnya hanya
Urutan ke-12 adalah Sukma, gimana ya? tapi deklarasi awalnya yang pakai foreach itu..
Jadi gini
<?php
$nama = array(
1=>"Andri",
6=>"Joko",
12=>"Sukma",
45=>"Rina",
55=>"Sari");
foreach ($nama as $kunci =>$isi)
{
echo "Urutan ke-$kunci adalah $isi";
echo "<br />";
}
//output yang di harapkan cuma..
Urutan ke-12 adalah Sukma
?>
Untuk hasil seperti itu kita harus membuat kondisi kapan "Sukma" itu ada gan, misalnya bisa pakai kondisi IF, seperti berikut:
<?php
$nama = array(
1=>"Andri",
6=>"Joko",
12=>"Sukma",
45=>"Rina",
55=>"Sari");
foreach ($nama as $kunci =>$isi) {
if ($kunci == 12) {
echo "Urutan ke-$kunci adalah $isi";
}
}
?>
Gan saya saya mau menghitung jumlah count di variable tersebut
$arr = array($musik1,$musik2,$musik3);
foreach(array_count_values($arr) as $k => $v){
if($v > 0){
echo "Musik<b>".$k."</b> ada ".$v." buah di dalam array<br />";
}
}
Bisa gk sih mas, kalau misalnya saya memasukan hasil array tersebut kedalam variable lagi. Soalnya saya ingin memisahkan hasil countnya kemduian di hitung.
Misalnya output dari kodingan di atas adalah
Musik Pop bernilai 1
Musik Rock bernilai 2
Saya mau membuat variable $pop dan $rock dari datas di atas. Maaf mas kalau ribet. hehehe
Itu isi variabel $musik1, $musik2 dan $musik3 berisi apa ya? apakah array juga? berarti $arr jadi array 2 dimensi y?
Tp terlepas dari itu, untuk menyimpan variabel dari dalam loopnya, bisa kok. misalnya:
foreach(array_count_values($arr) as $k => $v){
if($v > 0){
echo "Musik<b>".$k."</b> ada ".$v." buah di dalam array<br />";
$arr_k[]=$k;
$arr_v[]=$v;
}
}
Jadi setiap nilai $k dan $v akan disimpan di dalam array, nanti tinggal akses aja dengan $arr_k[0], $arr_k[1], dst.
maaf pak mau tanya.. kalo isi array nya kita ambil dari $_POST bagaimana ya? misalkan kita buat form dengan input checkbox. terus pilihan checkbox tsb dijadikan isi array. itu bgm pak?
kak mau tanya… misal menggunakan foreach… untuk menampilkan array 1-5 saja….dari array keseluruhan 1-10…. gimana kak ?
Nanti bisa dibuat sebuah kondisi IF, dan gunakan sebuah variabel counter untuk menghitung sudah perulangan ke berapa. Jika sudah diatas perulangan ke 5, tambahkan perintah break. Contohnya bisa kesini: https://www.duniailkom.com/tutorial-belajar-php-fungsi-dan-cara-penulisan-perintah-break-dalam-perulangan-php/
Terimakasih mas, penjelasannya sangat jelas dan singkat. dan sekarang saya sudah memahami fungsi foreach <?php…..
Siip mas, semoga bermanfaat…
Maaf mas boleh bertanya apakah foreach bisa digunakan seperti for bersarang ? Kalau bisa, bentuk algoritmanya seperti apa mas ? Terimakasih mas.
Yup bisa, tapi hanya untuk array 2 dimensi. Silahkan buat array 2 dimensi, lalu coba di foreach, nanti akan dapat gambarannya seperti apa..
definisi froeach itu apa gan?
foreach kalau di lopp element array kok bisa mengambil element array semua
gimana konsepnya froeach gan?
Hehe.. kalau prinsip kerjanya saya juga kurang paham gan, yang jelas perulangan foreach tersedia di PHP dan cara penggunaannya ya seperti yang dijelaskan artikel ini.
Setiap bahasa pemrograman punya fitur masing-masing. Walaupun bernama sama, cara penggunaannya bisa berbeda. Contohnya di JavaScript ada perulangan for of dan for in, kurang lebih mirip seperti foreach di PHP.
thanks buat artikel nya gan
Sangat bermanfaat, terima kasih
foreach($wallpaper->Results as $item) ini salahnya di mna ya gan..
kok kaya gini terus Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\
//////////
$wallpaper = $wallpaper->SearchResponse->Image;
$posttitle = $wallpaper->Results;
$posttitle = $posttitle[0];
$posttitle = $posttitle->Title;
$content = '';
foreach($wallpaper->Results as $item)
{
$title = $item->Title ;
$url = $item->MediaUrl;
$content .= "<img src='$url' />" . "<br />";
$content .= $title . "<br />";
$content .= $item->Width ." x ". $item->Height . " px";
}
Bisa di cek dulu apakah "$wallpaper->Result" ini memang berisi data yang valid, bisa jadi isinya malah kosong atau tidak sesuai.
mas saya mempunyai persoalan serupa seperti bung pras.. gimana solusinya
masalahnya dibagian ini mas….
foreach($wallpaper->Results as $item)
makasih
Agak susah nih, soalnya harus dipelajari dulu gimana struktur object $wallpaper itu sendiri.
KEREN! dan sangat simple dengan nada yang mudah di pahami, padahal saya sudah cari cari di php.net dan stackoverflow dan lain-lainya tentang foreach loop di php, tapi masih ga paham paham, tapi di sini langsung faham, makasih gan^^
makasih banyak pokoknya
Sama2, semoga bisa bermanfaat…
mas andre mau tanya saya menemukan perintah $stmt -> nah fungsi -> itu apa ya mas.. dan itu masuknya di materi bab apa? terimakasih
Tanda itu dipakai untuk mengakses sebuah method dari object di dalam PHP. PDO sudah menerapkan konsep pemrograman berbasis object, jadi sebelum ke PDO bisa pelajari dulu pemrograman object di PHP. Untuk tutorialnya bisa kesini: https://www.duniailkom.com/tutorial-belajar-oop-php-pemrograman-berbasis-objek-php/
makasih mas andre, ane jd paham fungsi nya sekarang..
Terimakasih atas pencerahan nya mas
jadi saya membuat data vacancy, terus datanya saya kasih perulangan foreach di laravel terus data vacancynya gak muncul lagi, gimana ya gan:(
Belum bisa saya simpulkan nih, soalnya harus lihat kode programnya dulu. Dan karena ini sudah pakai laravel, perlu waktu analisis yang lumayan lama (karena harus dipelajari lagi semua alur kode program yang ada).
hallo mas mau mintol nih, untuk mengubah script berikut ke dalam bentuk foreach gmn ?
trmksh sblmnya
<?php
$no = 1;
$sql = $koneksi -> query("select*from siswa");
while ($data=$sql->fetch_assoc()){
?>
<tr>
<td><?php echo $no++; ?></td>
<td><input class="form-control" name="nm_siswa" readonly value="<?php echo $data['nm_siswa'];?>"/></td>
<td><input class="form-control" name="kls_siswa" readonly value="<?php echo $data['kls_siswa'];?>"/></td>
<td> <center> <select class="form-control" name="ket">
<option></option>
<option value="sakit">Sakit</option>
<option value="izin">Izin</option>
<option value="alpa">Alpa</option>
</select>
</center></td>
</tr>
<?php } ?>
Jika ingin pakai foreach, hasil dari database itu ditampung dulu ke dalam array. Atau pakai fungsi mysqli_fetch_all($result,MYSQLI_ASSOC) agar hasil dari database langsung berbentuk array. Kemudian bari di foreach satu2.
gimana caranya foreach 3 dimensi ya mas?
Cara menuliskan echo untuk foreach agar tercetak
1. …….
2. ……., dan
3. ……..
Gimana caranya master
kayaknya ini salah
<?php
$nama = array("Andri","Joko","Sukma","Rina","Sari");
foreach ($nama as $val)
{
echo "$value";
echo "<br />";
}
?>
karena valuenya tidak sama antara $value dan $val
kalau beda, akan kelaur eror
Notice: Undefined variable: value in C:\xampp\htdocs\KelasPHP\for-each.php
Oh iya, terimakasih koreksinya… seharusnya disitu ditulis echo "$val". Sudah saya perbaiki.