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
$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
$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
$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
$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:
$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
$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
$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
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
if ($flag === true) {
echo '+++';
} else {
echo '---';
}
?>
Jepet një array:
<?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 '---'.
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ë.