PHP da bayroqlar bilan ishlash
Endi biz flaglar bilan ishlashni o‘rganamiz. Flag – bu faqat ikkita qiymatga ega bo‘lishi mumkin bo‘lgan maxsus o‘zgaruvchi: true yoki false. Flaglardan yo‘qlikni tekshirish masalalarida foydalanish mumkin, masalan, massivda ma’lum bir qiymat yo‘qligini aniqlash uchun. Keling, boshlaymiz.
Bizda sonlardan iborat massiv bor. Unda 3 soni mavjud yoki yo‘qligini tekshirishimiz kerak. Agar bo‘lsa – +++ ni chiqaramiz, aks holda – --- ni chiqaramiz.
Avval +++ ni chiqarishni sinab ko‘ramiz. Buning uchun massiv elementlarini tsikl yordamida ko‘rib chiqamiz va if operatori orqali tekshiramiz: agar joriy element 3 ga teng bo‘lsa, +++ ni ekranga chiqaramiz:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
}
}
?>
Biroq, bizning yechimimiz unchalik yaxshi emas: agar massivda 3 soni bitta emas, balki bir necha marta uchrasa, +++ bir necha marta ekranga chiqariladi.
Keling, massivni o‘zgartiramiz (unda 3 qiymatiga ega ikkita element bo‘lsin) va bu muammoni tasdiqlaymiz:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // bir necha marta chiqadi
}
}
?>
Muammoni tuzatamiz: agar element topilgan bo‘lsa, tsiklni break operatori yordamida to‘xtatamiz:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
break; // tsiklni tugatamiz
}
}
?>
Endi keling, agar massivda umuman 3 soni bo‘lmasa, ekranga --- chiqishini ta’minlaymiz.
Ko‘p uchraydigan xato – if ga else qo‘shishdir. Bunday holda, 3 ga teng bo‘lmagan har bir element uchun --- chiqariladi, bu esa noto‘g‘ri natijaga olib keladi:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // 3 elementida ko'rsatiladi
} else {
echo '---'; // 1, 2, 4, 5 elementida ko'rsatiladi
}
}
?>
Shunday qilib, else qo‘shish – noto‘g‘ri va ishlamaydigan yechim. Bunday turdagi masalalarni hal qilish uchun flag deb ataladigan usul qo‘llaniladi (bu turdagi muammolar juda tez-tez uchraydi).
Yuqorida aytib o‘tilganidek, flag – bu faqat ikkita qiymatga ega bo‘lishi mumkin bo‘lgan o‘zgaruvchi: true yoki false.
Endi flag o‘zgaruvchisini yaratamiz:
- Agar u true bo‘lsa, massivda 3 soni bor.
- Agar false bo‘lsa, bunday element yo‘q.
Dastlab, flag o‘zgaruvchisini false ga teng qilib qo‘yamiz, ya’ni 3 soni yo‘q deb hisoblaymiz:
let arr = [1, 2, 3, 4, 5];
let flag = false; // massivda 3-element yo'q deb hisoblaymiz
So‘ngra, avvalgidek if bilan tsiklni ishga tushiramiz. Agar tsikl massivda 3 soni borligini aniqlasa, flag o‘zgaruvchisiga true qiymatini beramiz va break yordamida tsikldan chiqamiz:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false; // massivda 3-element yo'q deb hisoblaymiz
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true; // Element mavjud – $flag o‘zgaruvchisini qayta belgilaymiz
break; // tsikldan chiqamiz
}
}
?>
Massivda 3 soni bor yoki yo‘qligiga faqat tsikl tugaganidan keyin javob bera olamiz. Va bu javob allaqachon bizda mavjud:
- Agar flag o‘zgaruvchisi tsikl tugaganidan keyin ham false bo‘lib qolgan bo‘lsa, demak, 3 soni massivda yo‘q.
- Agar flag true ga o‘zgargan bo‘lsa, demak, tsikl massivda 3 sonini topgan:
<?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 sikldan keyin if yozishimiz mumkin, u flag o‘zgaruvchisini tekshiradi va ekranga +++ yoki --- 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 '---';
}
?><?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 '---';
}
?>
№1
Massiv berilgan:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
?>
Ushbu massivda "c" elementi mavjudligini tekshiring. Agar mavjud bo'lsa, "+++" ni, bo'lmasa, "---" ni chop eting.
№2
Berilgan sonning tub son ekanligini tekshiradigan kodni yozing. Tub son faqat **1** ga va o‘ziga bo‘linadigan, boshqa hech qanday songa bo‘linmaydigan sondir.