Struktur Kontrol
Pada pembahasan logika percabangan di pertemuan sebelumnya, kita telah mengetahui fungsi struktur kontrol. Struktur kontrol membuat developer bisa untuk mengeksekusi sebagian penggalan kode program, dan tidak mengeksekusi sebagian yang lain.
Di tutorial kali ini, kita akan membahas jenis lain dari struktur kontrol pada PHP: yaitu perulangan.
Fungsi Perulangan
Pada tutorial tentang variabel PHP, kita telah mencoba membuat array lalu menampilkan salah satu item dari array tersebut dengan menggunakan indeks.
Nah, pertanyaannya, jika array tersebut memiliki ratusan atau ribuan item, bagaimana kita akan menampilkannya?
Apakah kita akan menulis perintah echo
sebanyak jumlah item pada array tersebut?
Oke, itu kalau kita tahu jumlah item pada array tersebut. Kalau tidak tahu, bagaimana?
Di sini lah kenapa kita membutuhkan perulangan!
Dengan blok kode perulangan, kita bisa membuat suatu statement atau perintah dalam PHP dengan satu kali tulis. Untuk kemudian kita biarkan sistem yang akan menjalankannya berulang kali.
Misal kita ingin menampilkan tulisan: “Saya berjanji tidak akan mengulangi lagi” sebanyak 100 kali. Kita cukup menggunakan satu perintah echo
saja, lalu kita masukkan kode tersebut ke dalam blok kode perulangan, dan mengaturnya agar sistem mengeksekusinya sebanyak 100 kali. Keren bukan?
Lalu, pertanyaannya adalah: bagamaina caranya?
Jenis-Jenis metode perulangan pada PHP
Sebelum menjawab pertanyaan tersebut. Kita ketahui dulu bahwa di dalam PHP, terdapat beberapa metode perulangan yang bisa kita gunakan. Mulai dari:
- perulangan for
- perulangan while
- perulangan do-while
- perulangan foreach
- purulangan rekursif
Pada tutorial ini kita akan mencobanya satu-persatu.
Perulangan for
Perulangan for
adalah perulangan yang paling simpel. Kita bisa menggunakan metode ini dengan menentukan jumlah perulangan yang kita inginkan. Misalkan saya ingin menampilkan tulisan “Saya berjanji tidak akan mengulangi” sebanyak 100x, saya bisa melakukannya seperti ini:
<?php
for ($i = 0; $i < 100; $i++) {
echo "Saya berjanji tidak akan mengulangi <br>";
}
Perulangan for
membutuhkan 3 buah ekspresi yang mana ekspresi tersebut masing-masing dipisahkan oleh tanda titik koma (;
).
Penjelasan:
- ekspresi pertama digunakan untuk menginisialisasi variabel
- ekspresi kedua digunakan untuk
boolean
statement, yang mana perulangan akan terus dilakukan selama statemen ini bernilaitrue
- ekspresi ketiga adalah suatu aksi yang akan selalu dijalankan setiap kali satu perulangan telah selesai dilakukan.
Contoh-contoh yang lain dari perulangan for
:
<?php
# inisialisasi variabel tidak harus dari angka 0
for ($i = 1; $i <= 10; $i++) {
echo "Perulangan ke-{$i} <br>";
}
Kita juga bisa menggunakan nama variabel sesuka kita:
<?php
for ($x = 1; $x < 11; $x++) {
echo "Nilai x = {$x} <br>";
}
Kita juga bisa menggunakan kelipatan lebih dari 1:
<?php
for ($i = 2; $i < 100; $i += 2) {
echo "Nilai i = {$i} <br>";
}
Atau hitung mundur:
<?php
for ($i = 10; $i > 0; $i--) {
echo "Nilai i = {$i} <br>";
}
Atau perulangan di dalam perulangan:
<?php
# kode program ini akan menampilkan * dalam bentuk persegi
# dengan ukuran 5x5
for ($i = 0; $i < 5; $i++) {
for ($j = 0; $j < 5; $j++) {
echo "* ";
}
echo "<br>";
}
Menampilkan Array
Kita juga bisa menampilkan seluruh isi dari suatu array menggunakan perulangan for
.
Kita bisa mengetahui panjang dari suatu array dengan perintah count(array)
.
<?php
$listMahasiswa = ['Nurul Huda', 'Wahid Abdullah', 'Elmo Bachtiar'];
for ($i = 0; $i < count($listMahasiswa); $i++) {
echo "Nama: {$listMahasiswa[$i]} <br>";
}
Perintah Break dan Continue
Kita bisa men-skip satu step perulangan dengan perintah continue
. Kita juga bisa memberhentikan proses perulangan dengan perintah break
sebelum ia sampai pada iterasi yang terakhir.
Perhatikan contoh berikut:
<?php
# inisialisasi variabel tidak harus dari angka 0
for ($i = 1; $i <= 50; $i++) {
if ($i % 10 === 0) {
continue; # skip perulangan jika nilai $i habis dibagi 10
}
echo "Perulangan ke-{$i} <br>";
if ($i > 40) {
break; # hentikan perulangan jika $i lebih dari 20
}
}
Contoh di atas akan men-skip pada setiap kelipatan 10. Dan dia juga akan berhenti secara paksa sebelum variabel $i
kurang dari atau sama dengan 50.
Dengan mempraktikkan contoh-contoh di atas, kita sekarang sudah memahami dan juga punya gambaran yang jelas tentang bagaimana cara kerja perulangan for
di dalam bahasa pemrograman PHP.
Perulangan while
Jenis perulangan yang kedua adalah perulangan while
.
Ia hampir sama dengan for
. Akan tetapi ia lebih ditujukan untuk kasus-kasus di mana kita tidak mengetahui secara pasti ada berapa jumlah perulangan yang harus dilakukan.
Contohnya adalah: ketika kita membuat game seperti Flappy Bird, maka kita akan selalu menggambar pipa baru selama user belum mati.
Kondisi “selama user belum mati”, membuat kita tidak benar-benar tahu berapa kali pipa baru akan di-generate dan ditampilkan pada layar. Bisa jadi 100 kali, 500 kali atau bahkan hanya 3 kali saja.
Nah, dalam kasus-kasus yang tidak jelas seperti itu, perulangan yang cocok untuk kita gunakan adalah perulangan while
.
Berikut ini adalah contoh penggunaan while while
:
<?php
$i = 0;
# perulangan ini akan dilakukan selama nilai $i kurang dari 20.
while ($i < 20) {
echo "Perulangan ke-{$i} <br>";
$i++;
}
Penjelasan:
Perulangan while
hanya menerima satu ekspresi saja: yaitu ekspresi boolean
. Di mana perintah yang ada di dalam blok kode while
, akan senantiasa dilakukan secara berulang-ulang selama ekspresi boolean
tersebut bernilai true
.
Perulangan tanpa batas yang jelas
Contoh berikut akan menampilkan nilai $i
selama ia bukan kelipatan 3. Dan kita akan mengubah nilai $i
secara random pada setiap perulangan dilakukan.
Silakan praktikkan kode berikut, lalu refresh halaman berkali-kali (kita tidak tahu berapa kali sistem akan melakukan perulangan yang kita minta).
<?php
# kita mulai dari angka 1
$i = 1;
# perulangan akan dilakukan selama variabel $i bukan kelipatan 3
while ($i % 3 !== 0) {
echo "Nilai i = {$i} <br>";
# ubah nilai $i secara random dari angka 1-100
$i = rand(1, 100);
}
Perulangan tanpa batas dengan while
Dengan perulangan while, kita bisa memerintahkan sistem untuk melakukan perulangan tanpa batas.
Bagaimana bisa? Itu bisa terjadi jika ekspresi boolean yang kita tulis selalu bernilai true
. Entah nilai true
secara langsung, atau nilai true
yang tidak langsung misalkan ekspresi: 1 > 0
(satu lebih dari nol).
NB: Jangan lakukan! Ini hanya ilustrasi:
<?php
while (true) {
echo "Jangan lakukan ini, atau PC anda akan macet!! <br>";
}
Perintah Break dan Continue
Sama seperti for
, dengan while
kita juga bisa men-skip suatu perulangan dengan perintah continue
. Dan kita juga bisa memberhentikan proses perulangan sebelum ia mencapai akhir, dengan perintah break
;
Perhatikan contoh berikut:
<?php
# kita mulai dari angka 1
$i = 1;
# perulangan akan dilakukan selama variabel $i bukan kelipatan 3
while ($i % 3 !== 0) {
if ($i % 5 === 0) {
# skip ke perulangan selanjutnya jika $i adalah kelipatan 5
# jangan lupa di-random dulu agar tidak terjadi perulangan tanpa batas
$i = rand(1, 500);
continue;
}
echo "Nilai i = {$i} <br>";
if ($i > 50 && $i < 60) {
break; # jika $i bernilai lebih dari 50 dan kurang dari 60 maka stop paksa
}
# ubah nilai $i secara random dari angka 1-500
$i = rand(1, 500);
}
Dengan mempraktikkan contoh-contoh di atas, seharusnya kita sekarang sudah memahami bagaimana cara kerja while
di dalam bahasa pemrograman PHP.
Perulangan do while
Perulangan do ... while
sama persis dengan perulangan while
. Ia sama-sama mengevaluasi ekspresi boolean
. Selama ekspresi tersebut bernilai true
, perulangan akan terus dilakukan. Dan jika nilai boolean
tersebut false
, perulangan akan dihentikan.
Bedanya hanya satu:
- Kalau dalam metode
while
, ekspresiboolean
akan diperiksa terlebih dahulu sebelum memulai perulangan. - Ada pun dengan
do ... while
, ia akan mengeksekusi perulangan terlebih dahulu, baru setelah itu ia akan mengevaluasi kondisiboolean
.
Apa konsekuensinya?
- Pada
while
, jika kondisi pertama kali bernilaifalse
, perulangan tidak akan dieksekusi sama sekali. - Sedangkan pada
do...while
, perulangan akan tetap dilakukan satu kali jika kondisi pertama sudah bernilai false.
Agar lebih jelas, perhatikan dan coba contoh berikut:
<?php
while (false) {
echo "Perulangan ke-1 dengan while! <br>";
}
do {
echo "Perulangan ke-1 dengan do while! <br>";
} while (false);
Pada kode program di atas, perintah di dalam perulangan while
sama sekali tidak dieksekusi, karena ekspresi boolean
-nya bernilai false
.
Sedangkan dalam perulangan do ... while
, perintah tersebut akan dieksekusi terlebih dahulu, baru setelah itu ia akan mengevaluasi kondisi boolean
, jika true
dia akan melakukan perulangan selanjutnya, dan jika tidak, dia akan berhenti.
Perulangan Foreach
Jenis perulangan selanjutnya adalah menggunakan foreach
. Jenis perulangan ini khusus untuk tipe data array
baik array asosiatif mau pun array terindeks.
Kita bisa melakukan perulangan pada setiap elemen array
tanpa harus tahu berapa panjang dari array
itu sendiri.
Sintaksnya ada dua versi, kita bisa menggunakan yang mana saja sesuai dengan kebutuhan.
Sintaks singkat
Sintaks perulangan foreach
versi singkat adalah sebagai berikut:
<?php
$listMahasiswa = ['Nurul Huda', 'Wahid Abdullah', 'Elmo Bachtiar'];
foreach ($listMahasiswa as $mahasiswa) {
echo "Nama : {$mahasiswa} <br>";
}
Penjelasan:
- Perulangan
foreach
(versi singkat) hanya menerima 2 buah variabel yang dipisahkan kata kuncias
- Variabel pertama adalah variabel bertipe data array
- Dan variabel kedua adalah variabel item dari array tersebut
Kelebihan menggunakan foreach
:
- Sintaks lebih singkat dari pada perulangan
for
untuk menampilkan array - Item array per-indeks sudah disimpan dalam satu variabel sehingga kita tidak perlu memanggil indeksnya lagi
Sintaks lengkap
Nah, untuk sintaks foreach
versi lengkap. Kita ketambahan beberapa ekspresi yaitu tanda =>
dan variabel $key
(nama variabelnya bebas).
Untuk lebih jelasnya silakan perhatikan kode program berikut:
<?php
$listMahasiswa = ['Nurul Huda', 'Wahid Abdullah', 'Elmo Bachtiar'];
foreach ($listMahasiswa as $key => $mahasiswa) {
echo "[{$key}] Nama : {$mahasiswa} <br>";
}
Penjelasan:
- Sintaks
foreach
versi lengkap ketambahan tanda=>
dan satu variabel - Variabel
$key
di dalam kode program di atas berisi nilai indeks dari iterasi yang sedang dilakukan - Variabel
$key
bisa menggunakan nama bebas.
Kelebihan:
- Dengan menggunakan sintaks lengkap, kita bisa mengetahui urutan iterasi dari perulangan yang sedang dilakukan.
- Sehingga kita bisa memanfaatkannya untuk proses pengkondisian tertentu.
Perulangan Rekursif
Jenis perulangan terakhir yang bisa kita gunakan dalam bahasa pemrograman PHP adalah: perulangan rekursif.
Semua metode perulangan yang telah kita coba di atas adalah metode perulangan iteratif. Sifatnya sama: yaitu melakukan perulangan pertama, kedua, ketiga, dan seterusnya.
Berbeda dengan perulangan rekursif yang memiliki cara kerja yang sangat berbeda.
Ia dikatakan rekursif karena perulangannya yang tidak “berhenti”. Ia adalah fungsi yang senantiasa memanggil dirinya sendiri.
Sebagai ilustrasi, bayangkan kita memiliki 2 buah cermin. Lalu kita letakkan 2 cermin tersebut saling berhadapan.
Apa yang akan terjadi? Bayangan yang dihasilkan akan saling berpantulan tanpa akhir, bukan?
Atau, sebagai ilustrasi yang lain: misalkan kita me-remote komputer yang sedang me-remote kita dengan Team Viewer. Kita akan mendapatkan hasil yang kira-kira seperti efek cermin tadi:
Untuk perulangan rekursif, kita akan mempelajarinya pada pembahasan tersendiri yaitu: Belajar Fungsi Rekursif PHP.
Pembahasan Selanjutnya
Pada tutorial selanjutnya, insyaallah kita akan membahas tentang Fungsi. Fungsi adalah suatu kumpulan baris kode untuk melakukan suatu tugas tertentu. Yang mana tugas tersebut bisa kita eksekusi berkali-kali di banyak tempat yang berbeda.
Lebih jelasnya: langsung saja buka pembahasan tentang Belajar Fungsi pada PHP.
Oiya, jangan lupa share seri belajar PHP dasar ini, ya!
Terima kasih banyak.