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.

Subscibe Now

Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com

Komitmen Kami: Kami senantiasa menghargai privasi Anda dan tidak akan membagikan identitas Anda ke pihak manapun.

13 Feedback dari pembaca

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com