Koder.uz

3 of 402 menu

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.

uz ru
light night