Setelah sebelumnya kita bahas perulangan dengan for loop, pada kesempatan kali ini kita akan membahas bentuk perulangan yang lain yaitu while dan do while pada PHP
Dafatar isi:
I. While Pada PHP
Perulangan while
merupakan bentuk perulangan paling simpel yang ada di PHP, perulangan ini digunakan ketika banyaknya perulangan tidak kita ketahui atau ketika kita tidak ingin menuliskan banyaknya perulangan (pada expression).
Mengutip wikipedia, terjemahan bebas dari while
loop adalah salah satu control statement dimana kode dieksekusi berulang kali berdasarkan kondisi tertentu. While
juga dapat diibaratkan statement if
yang di jalankan berulang kali. Jika digambarkan dalam bentuk flowchart, maka akan tampak seperti gambar berikut:
II. Format Penulisan While pada PHP
Penulisan perulangan while
pada PHP dapat menggunakan kurung kurawa, colon, atau tanpa keduanya:
// Kurung Kurawa, paling umum digunakan
while (expression) {
statement;
}
// Colon
while (expression) :
statement;
endwhile;
// Tanpa Kurung Kurawa maupun colon
while (expression)
statement;
jika kode diatas dijalankan, maka PHP akan mengecek expression
, jika expression
bernilai:
true
, maka blokstatement
akan dijalankan, selanjutnya PHP akan kembali lagi mengecek nilai expression, jika bernilai TRUE, PHP kembali menjalankanstatement
, begitu seterusnya.-
false
, maka perulangan berhenti.
Kelebihan penggunaan colon
Penggunaan colon yang diakhiri dengan endwhile
bermanfaat untuk memudahkan kita mengidentifikasi akhir dari statement while
dibanding hanya tanda kurung tutup ( } ), terutama ketika kode yang kita tulis panjang, disamping itu, juga bermanfaat ketika kode yang kita tulis merupakan kombinasi antara HTML dan PHP.
Contoh dapat dilihat pada artikel sebelumnya: Memahami If Else Pada PHP (dan Elseif)
III. Skip loop pada nilai tertentu
Ketika while loop sedang berjalan, terkadang kita ingin meng-skip nya pada nilai tertentu, untuk melakukannya gunakan keyword continue
, contoh:
$i = 1;
while ($i <= 10) {
if ($i == 5) {
$i++;
continue;
}
echo $i++; // 1234678910 - tidak termasuk nomor 5
}
IV. Standar Penulisan While dan do while
Sebagaimana di muat dalam PSR 2 Coding Style Guide, PHP FIG merekomendasikan standar penulisan untuk while dan do while sebagai berikut (perhatikan penulisan tanda kurung, spasi dan kurung kurawa):
while:
while ($expr) {
// structure body
}
do while:
do {
// structure body;
} while ($expr);
Keterangan:
- Gunakan kurung kurawa, bukan colon.
statement
ditulis tepat satu baris dibawah ekspresi atau satu baris dibawahdo
statement padado while
loop.- Perhatikan penggunaan spasi. Pada ekspresi, gunakan spasi untuk memisahkan variabel, operator, dan value, misal: (
$i <= 10
), hal ini bertujuan agar kode lebih mudah dibaca.
V. Contoh penggunaan while pada PHP
Contoh 1:
Salah satu contoh penggunaan while adalah ketika kita ingin memotong teks atau kalimat dengan batasan jumlah huruf tertentu dan pemotongan dilakukan pada bagian spasi, seperti telah kita bahas pada artikel: Memotong Teks dan Kalimat dengan PHP:
$num_char = 50;
$text = 'Contoh script yang digunakan untuk memotong 50 huruf pertama dari kalimat/paragraf dengan php';
$char = $text{$num_char - 1}; //ambil huruf ke 50 dari variabel $text
while($char != ' ') {
$char = $text{--$num_char}; // Cari spasi pada posisi 51, 52, 53, dst...
}
echo substr($text, 0, $num_char) . '...';
dari script diatas kita ketahui bahwa huruf ke 50 adalah u pada kata huruf, sedangkan yang kita butuhkan adalah karakter spasi, sehingga kita perlu mencari karakter spasi mulai huruf ke 49, 48, 47, dst….
Dalam kondisi demikian kita tidak akan tahu sampai huruf ke-berapa kita akan menemukan spasi, sehingga bentuk perulangan while
cocok untuk digunakan.
Contoh 2:
Contoh berikut adalah penggunaan while
ketika melakukan loop hasil query database:
$sql = 'SELECT * FROM `user`';
$stmt = $pdo->prepare($sql);
$stmt->execute();
while ($row = $stmt->fetch())
{
echo $row['nama'];
}
pada contoh diatas, setiap kali $stmt->fetch()
dijalankan, akan menghasilkan row tabel hasil query, row akan bergeser dari baris pertama, kedua, …dst hingga terakhir.
Bagaimana while bisa tahu akhir dari loop?
Mungkin sedikit membingungkan kenapa pada kondisi tersebut while
bisa tahu akhir dari loop padahal kita tidak mendefinisikan kondisi akhir loop seperti pada contoh 1?
Penjelasannya: setelah $stmt->fetch()
mencapai baris terakhir dan $stmt->fetch()
dijalankan kembali maka tidak akan menghasilkan apa-apa alias kosong, sehingga bernilai false
atau while()
, pada kondisi demikian perulangan while
akan berhenti.
Perhatikan contoh berikut:
$array = array('Januari', 'Februari');
while ($row = each($array))
{
echo $row['value'] . ' '; // Januari Februari
}
?>
pada contoh diatas, fungsi each
memiliki sifat seperti seperti $stmt->fetch()
, dimana setiap dijalankan, cursor akan berjalan dari element array pertama hingga terakhir, setelah habis, fungsi each
akan menghasilkan nilai kosong/false
, sehingga loop while
berhenti, untuk lebih jelasnya, perhatikan script berikut:
$array = array('Januari', 'Februari');
$each1 = each($array);
$each2 = each($array);
$each3 = each($array);
echo '<pre>';
print_r($each1);
/**
Array
(
[1] => Januari
[value] => Januari
[0] => 0
[key] => 0
)
*/
print_r($each2);
/**
Array
(
[1] => Februari
[value] => Februari
[0] => 1
[key] => 1
)
*/
print_r($each3);
/**
*/
dari contoh diatas terlihat bahwa setelah cursor mencapai element ke dua (baris 4), pemanggilan fungsi each
(baris 5) akan menghasilkan nilai kosong.
VI. Do While Pada PHP
Jujur saja, saya jarang sekali jika tidak bisa dikatakan tidak pernah menggunakan loop ini, hal ini dikarenakan (menurut saya) membutuhkan alur yang agak beda dari loop yang lain, sehingga sedikit membutuhkan ekstra logika, namun demikian tidak ada salahnya kita bahas fungsi ini.
Sebagaimana fungsi while
, do while
juga digunakan ketika kita tidak tahu akhir dari loop, namun bedanya expression diperiksa setelah perulangan/statement terjadi, sehingga setidaknya ada satu kali eksekusi statement. Format penulisan do while
adalah:
do {
statement; // dieksekusi terlebih dahulu
} while (expression);
Kapan loop do while digunakan?
banyak yang bertanya-tanya, dalam praktek pada kondisi apa perulangan do while
dibutuhkan? hal ini tentu saja tergantung dari case yang dihadapi oleh masing masing programmer.
Contoh salah satu kondisi yang bisa menggunakan do while
(meskipun sebenarnya menggunakan while
saja sudah cukup dan lebih mudah dimengerti) adalah fungsi memotong text, melanjutkan contoh while
sebelumnya namun kali ini menggunakan do while
:
$num_char = 50;
$text = 'Contoh script yang digunakan untuk memotong 50 huruf pertama dari kalimat / paragraf dengan php';
$num_char++; // ditambahkan 1 karena akan dikurangkan di baris 7
do {
$char = $text{--$num_char};
} while ($char != ' ');
echo substr($text, 0, $num_char) . '...';
dari contoh diatas, pertama kali PHP akan menjalankan statement
( $char = $text{--$num_char}
), kemudian melakukan pemeriksaan pada ekspresi ($char != ' '
) apakah variabel $char
bernilai spasi atau tidak, jika tidak loop akan dilakukan hingga variabel $char
bernilai spasi (‘ ‘).
III. Kesimpulan
Dari penjelasan diatas dapat disimpulkan bahwa baik while dan do while digunakan ketika kita tidak tahu jumlah perulangan yang terjadi atau tidak ingin menuliskan jumlah perulangan pada expression.
Namun terdapat sedikit perbedaan bahwa pada do while expression diperiksa pada akhir perulangan sehingga setidaknya statement diksekusi sekali.
Demikian artikel tentang while dan do while 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
13 Feedback dari pembaca
jadi ingat, mata kuliah dulu smster 1 dan smster nih. terimakasih mas, sangat bermanfaat.
Salam kenal 🙂
Jasa Konsultan dan Sertifikasi ISO
http://www.globalkonsultan.com
thx sangat membantu
good materinya gan
terima kasih yaa kakak atas materinya sangat berguna. mampir yaa My blog
artikenya sangat membantu. thnks
–> My blog
Kak mau tanya mengapa saat kita ingin mengambil data harus menggunakan perulangan while … mengapa tidak perulagan for…. makasih kak
Karena jumlah data tidak diketahui mbak, hal ini sudah dibahas pada artikel tentang mysqli_fetch, coba dicari di blog ini
pak mau nanya,
bisakah while itu ada beberapa ekspresi misalnya menggunakan $jumlah && $jumlah1 && $jumlah2 ?
terimkasih pak
Bisa mas…
kurang lebih Kaloo script diatas kok gamau muncul ya pak ?
Maksudnya seperti apa ya mas?
tulisannya sangat bagus dan membantu, terus menulis pak untuk kemajuan anak bangsa
Terima kasih mas…