Puna me flamuj në PHP

Tani do të mësojmë të punojmë me flamuj. Një flamuj - është një variabël e veçantë, e cila mund të marrë vetëm dy vlera: true dhe false. Me ndihmën e flamujve mund të zgjidhen probleme që kontrollojnë mungesën e diçkaje: për shembull, mund të kontrollohet që në një array nuk ka asnjë element me një vlerë të caktuar. Le të fillojmë.

Le të zgjidhim problemin e mëposhtëm: jepet një array me numra, duhet të kontrollohet, nëse në të ka një element me vlerën 3 apo jo. Nëse ka - do të printojmë '+++', nëse jo - do të printojmë '---'.

Për fillim le të përpiqemi të printojmë '+++'. Për këtë do të përsërisim përmes të gjithë elementëve të array-it tonë dhe me një if do të pyesim - a është i barabartë elementi aktual me vlerën 3. Nëse është i barabartë - do të printojmë '+++':

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

Por zgjidhja jonë nuk është shumë e mirë: në fund të fundit nëse në array do të ketë jo një vlerë 3, por disa, atëherë '+++' do të printohet disa herë. Le të rregullojmë array-in tonë (le të bëjmë dy elementë me vlerën 3) dhe të bindemi në këtë:

php<?php
  $arr = [1, 2, 3, 4, 3, 5];
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      echo '+++'; // do të printojë disa herë
    }
  }
?>

Le të rregullojmë problemin: le ta përfundojmë ciklin me ndihmën e break, nëse elementi tashmë është gjetur:

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

Tani le të përpiqemi të bëjmë që, nëse në array nuk ka fare elementë me vlerën 3, të printohet '---'. Një keqkuptim i përhapur do të ishte të shtohet else te if-i ynë - në këtë rast '---' do të printohej për të gjithë elementët, që nuk janë 3:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      echo '+++'; // do të printojë te elementi 3
    } else {
      echo '---'; // do të printojë te elementët 1, 2, 4, 5
    }
  }
?>

Pra, ideja për të shtuar else - është një ide e keqe dhe jo funksionale. Për zgjidhjen e problemeve të këtij tipi (probleme të tilla hasen mjaft shpesh) përdoren të ashtuquajturat flamuj.

Siç është përmendur më lart, një flamuj - është një variabël e tillë, e cila mund të marrë dy vlera: true ose false.

Pra, le të bëjmë një variabël flag me këtë vlerë: nëse ajo është e barabartë me true, atëherë në array ka një element 3, por nëse false, atëherë nuk ka një element të tillë.

Fillimisht le ta vendosim variablin flag në vlerën false - domethënë do të konsiderojmë, që elementi 3 nuk gjendet në array:

javascript$arr = [1, 2, 3, 4, 5];
$flag = false; // konsiderojmë se elementi 3 nuk gjendet në array

Pastaj do të nisim një cikël me një if, ashtu siç e bënim këtë më parë. Nëse cikli zbulon se në array ka një element 3 - atëherë do ta vendosim variablin flag në vlerën true dhe do të dalim nga cikli me ndihmën e break:

php<?php
  $arr = [1, 2, 3, 4, 5];
  $flag = false; // konsiderojmë se elementi 3 nuk gjendet në array
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      $flag = true; // elementi gjendet - ridefinjojmë variablin $flag
      break; // dalim nga cikli
    }
  }
?>

Përgjigjen në pyetjen, nëse në array gjendet 3 apo jo, ne mund ta japim vetëm pas ciklit. Dhe kjo përgjigje tashmë e kemi: pas ciklit variabli flag mund të ketë mbetur false ose mund të ketë ndryshuar vlerën e saj në true, nëse cikli zbuloi në array 3:

php<?php
  $arr = [1, 2, 3, 4, 5];
  $flag = false;
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      $flag = true;
      break;
    }
  }
  
  // këtu variabli $flag është i barabartë ose me true, ose me false
?>

Tani pas ciklit ne mund të bëjmë një if, i cili do të shikojë variablin flag dhe do të printojë në ekran '+++' ose '---':

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

Jepet një array:

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

Kontrolloni, nëse në këtë array ka element 'c'. Nëse ka - printoni '+++', por nëse nuk ka - printoni '---'.

Задание 2

Shkruani kod, i cili do të kontrollojë nëse një numër është i thjeshtë apo jo. Një numër i thjeshtë pjestohet vetëm me një dhe me vetveten, dhe nuk pjestohet me numra tjerë.