Struktur Kontrol (2) As’ad Djamalilleil
Statement while while (expr) statement expr statement true false
Statement while mengeksekusi statement berulang-ulang, selama expr bernilai TRUE Setiap kali PHP menjalankan statement di dalam perulangan maka terhitung satu kali iterasi Nilai dari expr diperiksa setiap kali memasuki awal perulangan, jadi walaupun nilai expr berubah selama eksekusi statement, eksekusi tidak berhenti sampai akhir iterasi Jika expr pada while bernilai FALSE pada saat pertama kali dijalankan, maka statement tidak satu kali pun dijalankan
contoh statement while mencetak nilai $i = 1; while ($i <= 10) echo $i++; $i = 1; while ($i <= 10){ echo $i; $i++; }
contoh statement alternatif dari while $i = 1; while ($i <= 10): echo $i; $i++; endwhile;
Statement do-while do statement while (expr); expr statement true false
Perulangan do-while sangat mirip dengan while, kecuali expr diperiksa di akhir iterasi dan bukan di awal Perbedaan utama dari do-while dan while adalah pada do-while statement pasti dijalankan pada iterasi pertama Jadi pada statement do-while, statement pasti dijalankan minimal satu kali
Contoh perulangan do-while $i = 0; do echo $i; while ($i>0); Perulangan di atas hanya berjalan satu kali iterasi, dikarenakan setelah iterasi pertama ketika expr diperiksa akan menghasilkan nilai FALSE sehingga perulangan dihentikan
Statement for for (expr1; expr2; expr3) statement expr1 expr2 true false statement expr3
Ekspresi pertama ( expr1 ) dieksekusi satu kali di awal perulangan Di awal setiap iterasi, expr2 dijalankan untuk diperiksa nilainya. Jika nilainya TRUE, maka perulangan dilanjutkan dan statement dieksekusi. Jika nilainya FALSE, maka perulangan dihentikan Pada akhir setiap iterasi, expr3 dieksekusi Setiap ekspresi dapat dikosongkan. Bila expr2 dikosongkan, berarti perulangan dijalankan tanpa henti tetapi dapat digunakan statement break pada statement untuk keluar dari perulangan for
Contoh mencetak 1 – 10 di for Contoh 1: for ($i = 1; $i <= 10; $i++) echo $i; Contoh 2: for ($i = 1;;$i++) { if ($i > 10) break; echo $i; }
Contoh 3: $i = 1; for (;;) { if ($i > 10) break; echo $i; $i++; } Contoh 4: for ($i = 1; $i <= 10; echo $i, $i++);
Bentuk alternatif sintaks untuk for: for (expr1; expr2; expr3): statement; … … … ; endfor;
Statement foreach Statement foreach memberikan cara yang mudah untuk iterasi pada array Terdapat dua sintaks foreach, dimana sintaks kedua kurang digunakan tetapi berguna sebagai tambahan dari bentuk sintaks yang pertama:
foreach(array as $nilai) statement Bentuk pertama memutar index array yang diberikan oleh argumen array. Pada setiap perulangan, nilai dari elemen array yang sedang dibaca diberikan kepada variabel $nilai, kemudian index array berpindah ke elemen array berikutnya (dan begitu seterusnya)
foreach(array as $kunci => $nilai) statement Bentuk kedua melakukan hal yang sama, dengan tambahan bahwa index dari elemen array yang sedang dibaca diberikan kepada variabel $kunci pada setiap kali perulangan
contoh (hanya menggunakan nilai) : $a = array (1, 2, 3, 17); foreach ($a as $v) echo "Nilai dari \$a: $v \n"; contoh (menggunakan nilai dan key/index) : $a = array (1, 2, 3, 17); $i = 0; //hanya sebagai ilustrasi foreach ($a as $v) echo "\$a[$i] => $v \n";
contoh (menggunakan key dan nilai) : $a = array ("satu" => 1, "dua" => 2, "lima" => 5, "tujuh" => 7); foreach($a as $k => $v) echo "\$a[$k] => $v \n"; contoh array multi-dimensi : $a[0][0] = "a"; $a[0][1] = "b"; $a[1][0] = "y"; $a[1][1] = "z"; foreach($a as $v1) foreach ($v1 as $v2) echo "$v2 \n";
contoh array dinamis : foreach(array(1, 2, 5, 7) as $v) echo"$v \n";
Kedua contoh script di bawah menghasilkan output yang sama: reset ($arr); while (list(, $nilai) = each ($arr)) echo "Nilai: $nilai \n"; Menggunakan foreach: foreach ($arr as $nilai) echo "Nilai: $nilai \n";
Kedua contoh script di bawah juga menghasilkan output yang sama: reset ($arr); while (list($key,$nilai) = each($arr)) echo "Kunci: $key; Nilai: $nilai \n"; Menggunakan foreach: foreach ($arr as $key => $nilai) echo "Key: $key; Nilai: $nilai \n";
Statement break break mengakhiri eksekusi dari statement for, foreach while, do-while atau switch break menerima sebuah argumen opsional bertipe numerik yang menentukan berapa banyak struktur bersarang untuk dilompati
$arr = array ('satu', 'dua', 'tiga', 'empat', 'stop', 'lima'); while (list (, $val) = each ($arr)) if ($val == 'stop') break; echo "$val \n"; break di dalam statement if dapat diganti dengan “break 1” dimana memiliki arti yang sama
Contoh menggunakan argumen opsional $i = 0; while (++$i) { switch ($i) { case 5: echo "Ke-5 \n"; break 1; // keluar dari switch case 10: echo "Ke-10, berhenti \n"; break 2; // keluar dari switch dan while default: break; }
Statement continue continue digunakan di dalam struktur perulangan untuk melompati sisa dari iterasi pada perulangan yang sedang berjalan dan melanjutkan eksekusi dari iterasi berikutnya continue menerima sebuah argumen opsional bertipe numerik yang menyatakan berapa level dari perulangan bersarang yang akan dilompati
Contoh : while(list($key,$nilai) = each($arr)){ if (!($key % 2)) { // lompati angka ganjil continue; } prosesNilai($nilai); }
Contoh : $i = 0; while ($i++ > 5) { echo "loop paling luar \n"; while (1) { echo "loop di tengah \n"; while (1) { echo "loop di dalam \n"; continue 3; } echo "Ini tidak pernah dicetak \n"; } echo "Ini juga tdk pernah dicetak \n"; }
Statement require() Statement require() mengganti pernyataan tersebut dengan file yang ditentukan oleh argumennya, seperti halnya pra-prosesor #include pada bahasa C/C++ Perlu dicatat tentang cara kerjanya adalah ketika sebuah file di-include() atau di- require(), parsing turun dari mode PHP ke mode HTML pada awal file target, dan kembali ke mode PHP pada akhir file.
Untuk alasan tersebut di atas, kode apapun di dalam file target yang seharusnya dieksekusi sebagai kode PHP harus diapit dengan tag PHP yang benar Tidak seperti include(), require() akan selalu membaca file target, bahkan jika baris yang memuat statement require() tidak pernah dieksekusi Jika ingin secara kondisional menyertakan file, maka gunakan statement include()
Contoh sebuah script tanpa require(): <?php $a = "coba ji cess"; echo $a; ?> Script di atas kemudian dipecah menjadi dua file, yaitu file coba01.php dan coba02.php, seperti berikut:
Isi file coba01.php : <?php require("coba02.php"); echo $a; ?> Isi file coba02.php : <?php $a = "coba ji cess"; ?>
Statement include() Statement include() menyertakan dan mengevaluasi file pada argumen include() berbeda dari require() dimana statement include dievaluasi ulang setiap kali statement tersebut ditemukan (dan hanya jika dieksekusi) Statement include() harus dijadikan sebagai sebuah blok statement ( { } ) jika dijalankan di dalam sebuah control structure
Contoh penggunaan include() : $nama = array ('satu.php', 'dua.php', 'tiga.php'); for ($i = 0; $i < count($nama); $i++){ include $nama[$i]; } Contoh : if ($kondisi) { include("masuk.php"); } else { include("keluar.php"); }
Statement require_once() Perbedaan utama dengan statement require() adalah bahwa penggunaan require_once() akan memastikan bahwa kode ditambahkan ke dalam script hanya satu kali, dan menghindari tabrakan yang dapat terjadi dengan nilai variabel atau nama fungsi
Statement include_once() Perbedaan dengan statement include() adalah jika kode dari sebuah file telah di-include(), maka kode tersebut tidak akan di-include() lagi include_once() seharusnya digunakan pada kasus dimana file yang sama dapat di-include atau dievaluasi lebih dari sekali selama eksekusi script tertentu, dan ingin dipastikan file tersebut hanya di-include satu kali saja untuk menghindari masalah dengan redefinisi fungsi, pemberian ulang nilai variabel, dan lain-lain