ffCCBot/2.0 (http://commoncrawl.org/faq/)
Update: 11-08-2016

Memahami While dan Do While Pada PHP Dengan Contoh Kasus

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:

  1. While Pada PHP
  2. Penulisan While Pada PHP
  3. Contoh penggunaan while
  4. Do While Pada PHP
  5. Standar Penulisan

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:

While dan Do While Pada PHP

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:

  1. true, maka blok statement akan dijalankan, selanjutnya PHP akan kembali lagi mengecek nilai expression, jika bernilai TRUE, PHP kembali menjalankan statement, begitu seterusnya.
  2.  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 dibawah do statement pada do 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.

Recomended Post

Satu Feedback dari pembaca

Silakan tinggalkan komentar

Like Us

Dapatkan update artikel terbaru via E-Mail
  1. Memahami dan Menampilkan Tanggal dan Waktu Pada PHP
  2. Menghitung Selisih Waktu Dengan PHP – Cara Termudah
  3. Memahami Fungsi Date Pada PHP
  4. Memahami Fungsi Time, Strtotime, dan Mktime Pada PHP – Memanipulasi Waktu
  5. Memahami Zona Waktu (Timezone) dan Selisih Waktu Pada PHP
  6. Setting ODBC MySQL Untuk Gammu
  7. Cara Install dan Menggunakan Gammu di Windows
  8. Format Tanggal Indonesia Dengan PHP
  9. Cara Install MySQL Portable Zip File di Windows – Panduan Lengkap
  10. Memahami Statemen Return Pada PHP