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
$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
$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
$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
$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:
$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
$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
$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
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
if ($flag === true) {
echo '+++';
} else {
echo '---';
}
?>
Massiv verilmişdir:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
?>
Yoxlayın ki, bu massivdə 'c' elementi varmı?
Əgər varsa - '+++' çap edin,
yoxdursa - '---' çap edin.
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.