Bekerja dengan Flag di PHP
Sekarang kita akan belajar bekerja dengan flag.
Flag adalah variabel khusus yang
hanya dapat menerima dua nilai: true
dan false. Dengan menggunakan flag, kita dapat menyelesaikan
tugas-tugas yang memeriksa ketiadaan sesuatu:
contohnya, kita dapat memeriksa bahwa dalam array
tidak ada elemen dengan nilai tertentu. Mari
kita mulai.
Mari kita selesaikan tugas berikut: diberikan sebuah array
dengan angka, perlu diperiksa apakah di dalamnya ada
elemen dengan nilai 3 atau tidak. Jika
ada - tampilkan '+++', jika tidak -
tampilkan '---'.
Pertama-tama, mari kita coba menampilkan '+++'.
Untuk itu, kita akan ulangi semua elemen array kita
dan dengan *if* akan menanyakan - apakah elemen saat ini
sama dengan nilai 3. Jika sama - tampilkan
'+++':
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
}
}
?>
Tapi solusi kita tidak terlalu baik: karena jika
dalam array tidak hanya ada satu nilai 3,
tapi beberapa, maka '+++' akan ditampilkan beberapa
kali. Mari kita perbaiki array kita (buat
dua elemen dengan nilai 3) dan pastikan hal ini:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // akan menampilkan beberapa kali
}
}
?>
Mari perbaiki masalahnya: hentikan perulangan dengan
break, jika elemen sudah ditemukan:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
break; // hentikan perulangan
}
}
?>
Sekarang mari kita coba membuat agar,
jika dalam array sama sekali tidak ada elemen dengan nilai
3, ditampilkan '---'. Kesalahpahaman yang umum
adalah menambahkan else ke
*if* kita - dalam hal ini '---' akan
ditampilkan untuk semua elemen yang bukan
3:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // akan tampil pada elemen 3
} else {
echo '---'; // akan tampil pada elemen 1, 2, 4, 5
}
}
?>
Jadi, ide untuk menambahkan else adalah ide yang buruk,
tidak bekerja. Untuk menyelesaikan tugas-tugas semacam ini
(tugas seperti ini cukup sering ditemui) digunakan yang disebut flag.
Seperti yang telah disebutkan di atas, flag adalah
variabel yang dapat menerima dua nilai:
true atau false.
Jadi, mari kita buat variabel flag
dengan nilai seperti ini: jika nilainya true,
maka dalam array ada elemen 3, dan jika
false, maka tidak ada elemen tersebut.
Awalnya, kita atur variabel flag
ke nilai false - artinya kita anggap,
bahwa elemen 3 tidak ada dalam array:
$arr = [1, 2, 3, 4, 5];
$flag = false; // menganggap bahwa elemen 3 tidak ada dalam array
Kemudian jalankan perulangan dengan *if* seperti yang kita lakukan
sebelumnya. Jika perulangan menemukan bahwa dalam array
ada elemen 3 - maka atur variabel flag
ke nilai true dan keluar dari perulangan
dengan break:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false; // menganggap bahwa elemen 3 tidak ada dalam array
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true; // elemen ada - ubah variabel $flag
break; // keluar dari perulangan
}
}
?>
Jawaban atas pertanyaan, apakah dalam array ada 3
atau tidak, hanya bisa kita berikan setelah perulangan.
Dan jawaban ini sudah kita miliki: setelah perulangan
variabel flag bisa tetap false
atau bisa berubah nilainya menjadi true,
jika perulangan mendeteksi adanya 3 dalam array:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
// di sini variabel $flag sama dengan true atau false
?>
Sekarang setelah perulangan, kita dapat membuat *if*, yang
akan melihat variabel flag dan menampilkan
'+++' atau '---' ke layar:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
if ($flag === true) {
echo '+++';
} else {
echo '---';
}
?>
Diberikan array:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
?>
Periksa apakah dalam array ini ada elemen
'c'. Jika ada - tampilkan '+++',
dan jika tidak - tampilkan '---'.
Tulis kode yang akan memeriksa suatu angka, apakah itu bilangan prima atau bukan. Bilangan prima hanya habis dibagi oleh satu dan oleh dirinya sendiri, dan tidak habis dibagi oleh angka lainnya.