PHP-də bayraqlarla işləmək

İndi biz bayraqlarla işləməyi öyrənəcəyik. Bayraq - yalnız iki dəyər qəbul edə bilən xüsusi dəyişəndir: true və false. Bayraqların köməyi ilə müəyyən bir şeyin olmamasını yoxlayan vəzifələri həll etmək olar: məsələn, massivdə müəyyən dəyəri olan elementin olmadığını yoxlamaq olar. Gəlin başlayaq.

Gəlin aşağıdakı vəzifəni həll edək: ədədlərdən ibarət massiv verilmişdir, onun daxilində 3 dəyəri olan elementin olub-olmadığını yoxlamaq lazımdır. Əgər varsa - '+++' çap edək, yoxdursa - '---' çap edək.

Əvvəlcə gəlin '+++' çap etməyə çalışaq. Bunun üçün massivimizin bütün elementlərini gəzəcəyik və if ilə soruşacağıq - cari element 3 dəyərinə bərabərdirmi? Əgər bərabərdirsə - '+++' çap edək:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      echo '+++';
    }
  }
?>

Lakin bizim həllimiz çox yaxşı deyil: çünki əgər massivdə bir 3 dəyəri deyil, bir neçə dəyər olarsa, onda '+++' bir neçə dəfə çap olunacaq. Gəlin massivimizi düzəldək (iki elementin dəyərini 3 edək) və buna əmin olaq:

php<?php
  $arr = [1, 2, 3, 4, 3, 5];
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      echo '+++'; // bir neçə dəfə çap edəcək
    }
  }
?>

Problemi düzəldək: əgər element artıq tapılıbsa, break istifadə edərək döngüdən çıxaq:

php<?php
  $arr = [1, 2, 3, 4, 3, 5];
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      echo '+++';
      break;  // döngüdən çıx
    }
  }
?>

Gəlin indi elə edək ki, əgər massivdə ümumiyyətlə 3 dəyəri olan element yoxdursa, '---' çap olunsun. Ümumi bir səhv if-ə else əlavə etmək olardı - bu halda '---' 3 olmayan bütün elementlər üçün çap olunacaq:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      echo '+++'; // 3-cü elementdə çap edəcək
    } else {
      echo '---'; // 1, 2, 4, 5-ci elementlərdə çap edəcək
    }
  }
?>

Beləliklə, else əlavə etmək fikri - pis fikirdir, işləməz. Bu tip vəzifələri həll etmək üçün (belə vəzifələr kifayət qədər tez-tez rast gəlinir) sözdə bayraqlardan istifadə olunur.

Yuxarıda artıq qeyd olunduğu kimi, bayraq - yalnız iki dəyər qəbul edə bilən dəyişəndir: true və ya false.

Beləliklə, gəlin flag dəyişəni edək bununla belə bir məna verək: əgər o true-a bərabərdirsə, onda massivdə 3 elementi var, əgər false-dırsa, onda belə bir element yoxdur.

Əvvəlcə flag dəyişənini false dəyərinə qoyaq - yəni hesab edək ki, massivdə 3 elementi yoxdur:

javascript$arr = [1, 2, 3, 4, 5];
$flag = false; // hesab edirik ki, massivdə 3 elementi yoxdur

Sonra döngüni if ilə əvvəllər etdiyimiz kimi işə salaq. Əgər döngü aşkar edərsə ki, massivdə 3 elementi var - onda flag dəyişənini true dəyərinə qoyaq və döngüdən break ilə çıxaq:

php<?php
  $arr = [1, 2, 3, 4, 5];
  $flag = false; // hesab edirik ki, massivdə 3 elementi yoxdur
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      $flag = true; // element var - $flag dəyişənini yenidən təyin edək
      break; // döngüdən çıxaq
    }
  }
?>

Massivdə 3 olub-olmadığı sualına cavab ancaq döngüdən sonra verə bilərik. Və bu cavab artıq bizdə var: döngüdən sonra flag dəyişəni false olaraq qala bilər ya da dəyərini true olaraq dəyişə bilər, əgər döngü massivdə 3 aşkar etdisə:

php<?php
  $arr = [1, 2, 3, 4, 5];
  $flag = false;
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      $flag = true;
      break;
    }
  }
  
  // burada $flag dəyişəni ya true, ya da false-dur
?>

İndi döngüdən sonra biz if edə bilərik ki, flag dəyişəninə baxsın və ekranda '+++' və ya '---' çap etsin:

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 verilmişdir:

php<?php
  $arr = ['a', 'b', 'c', 'd', 'e'];
?>

Yoxlayın ki, bu massivdə 'c' elementi varmı? Əgər varsa - '+++' çap edin, yoxdursa - '---' çap edin.

Задание 2

Elə kod yazın ki, ədədin sadə olub-olmadığını yoxlasın. Sadə ədəd yalnız birə və özünə bölünür, başqa ədədlərə bölünmür.