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<?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<?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<?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<?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:

javascript$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<?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<?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<?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<?php
  $arr = ['a', 'b', 'c', 'd', 'e'];
?>

Ushbu massivda 'c' elementi borligini tekshiring. Agar bo'lsa - '+++' chiqaring, agar bo'lmasa - '---' chiqaring.

Задание 2

Sonning tub yoki tub emasligini tekshiradigan kod yozing. Tub son faqat bitta va o'ziga bo'linadi, boshqa sonlarga bo'linmaydi.