PHPda flaglar bilan ishlash
Hozir biz flaglar bilan ishlashni o'rganamiz.
Flag - bu faqat ikkita qiymat qabul qiladigan maxsus o'zgaruvchi:
true va false. Flaglar yordamida ma'lum bir narsaning
yo'qligini tekshiradigan vazifalarni hal qilish mumkin:
masalan, massivda ma'lum qiymatga ega element yo'qligini tekshirish mumkin.
Keling, boshlaymiz.
Keling, quyidagi vazifani hal qilaylik: sonlar massivi berilgan,
unda 3 qiymatiga ega element bor yoki yo'qligini tekshirish kerak.
Agar bo'lsa - '+++' chiqaramiz, agar bo'lmasa -
'---' chiqaramiz.
Boshlash uchun '+++' chiqarishga harakat qilaylik.
Buning uchun massivning barcha elementlarini ko'rib chiqamiz
va if bilan joriy element 3 qiymatiga tengmi yo'qmi so'raymiz.
Agar teng bo'lsa - '+++' chiqaramiz:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
}
}
?>
Ammo bizning yechimimiz unchali yaxshi emas: agar
massivda bitta 3 qiymati emas, balki bir nechta bo'lsa,
'+++' bir necha marta chiqadi. Keling, massivni o'zgartiramiz
(ikkita 3 qiymatiga ega element qilamiz) va bunga ishonch hosil qilamiz:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // bir necha marta chiqaradi
}
}
?>
Muammoni tuzatamiz: agar element topilgan bo'lsa,
break yordamida tsiklni tugatamiz:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
break; // tsiklni tugatamiz
}
}
?>
Keling, endi massivda umuman 3 qiymatiga ega element bo'lmasa,
'---' chiqadigan qilishga harakat qilaylik. Keng tarqalgan
xato - if ga else qo'shishdir - bu holda '---'
3 bo'lmagan barcha elementlar uchun chiqadi:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // 3 elementida chiqaradi
} else {
echo '---'; // 1, 2, 4, 5 elementlarida chiqaradi
}
}
?>
Shunday qilib, else qo'shish g'oyasi - yomon
g'oya, ishlamaydi. Shu kabi vazifalarni hal qilish uchun
(bunday vazifalar etarlicha tez-tez uchraydi) flaglar deb ataladigan
narsalardan foydalaniladi.
Yuqorida eslatib o'tilganidek, flag - bu shunday o'zgaruvchiki,
ikki qiymat qabul qilishi mumkin: true yoki false.
Shunday qilib, keling flag o'zgaruvchisini yarataylik
quyidagi qiymat bilan: agar u true ga teng bo'lsa,
demak massivda 3 elementi bor, agar false bo'lsa,
demak bunday element yo'q.
Dastlab flag o'zgaruvchisini false qiymatiga o'rnatamiz -
ya'ni massivda 3 elementi yo'q deb hisoblaymiz:
$arr = [1, 2, 3, 4, 5];
$flag = false; // massivda 3 elementi yo'q deb hisoblaymiz
Keyin ilgari qilganimizdek if bilan tsiklni ishga tushiramiz.
Agar tsikl massivda 3 elementi borligini aniqlasa - flag
o'zgaruvchisini true qiymatiga o'rnatamiz va tsikldan
break yordamida chiqamiz:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false; // massivda 3 elementi yo'q deb hisoblaymiz
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true; // element bor - $flag o'zgaruvchisini qayta belgilaymiz
break; // tsikldan chiqamiz
}
}
?>
Massivda 3 bormi yo'qmi degan savolga javobni
faqat tsikldan keyin berishimiz mumkin. Va bu javob bizda allaqachon bor:
tsikldan keyin flag o'zgaruvchisi false da qolishi mumkin
yoki tsikl massivda 3 borligini aniqlagan bo'lsa true
qiymatiga o'zgartirilgan bo'lishi mumkin:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
// bu yerda $flag o'zgaruvchisi true yoki false ga teng
?>
Endi tsikldan keyin if yasashimiz mumkin, u
flag o'zgaruvchisiga qaraydi va
ekranda '+++' yoki '---' ni chiqaradi:
<?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 '---';
}
?>
Massiv berilgan:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
?>
Ushbu massivda 'c' elementi borligini tekshiring.
Agar bo'lsa - '+++' chiqaring,
agar bo'lmasa - '---' chiqaring.
Sonning tub yoki tub emasligini tekshiradigan kod yozing. Tub son faqat bitta va o'ziga bo'linadi, boshqa sonlarga bo'linmaydi.