PHP'де flag'дар менен иштөө
Азыр биз flag'дар менен иштөөнү үйрөнөбүз.
Flag - бул өзгөчө өзгөрмө, ал
эки гана маани кабыл ала алат: true
жана false. Flag'дардын жардамы менен
бир нерсенин жоктугун текшерүүчү
маселелерди чечсе болот:
мисалы, массивде белгилүү бир мааниси бар элемент
жок экендигин текшерсе болот. Келгиле,
баштайлы.
Келгиле, төмөнкү маселени чечейли: сандардан турган массив
берилген, анда 3 мааниси бар элемент
барбы же жокпу экендигин текшерүү керек. Эгер
бар болсо - '+++' чыгарабыз, эгер
жок болсо - '---' чыгарабыз.
Башында келгиле, '+++' чыгара турганыбызга аракет кылалы.
Бул үчүн биздин массивдин бардык элементтерин
кыдырып чыгып, if менен - азыркы элемент
3 маанисине барабарбы же жокпу деп сурайбыз. Эгер
барабар болсо - '+++' чыгарабыз:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
}
}
?>
Бирок биздин чечимибиз өтө жакшы эмес: анткени эгер
массивде бир эле 3 мааниси болбосо,
бир нече болсо, анда '+++' бир нече
жолу чыгат. Келгиле, биздин массивибизди оңдоп коёлу (ага
мааниси 3 болгон эки элемент кошуп) жана муну текшерип көрөлү:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // бир нече жолу чыгарат
}
}
?>
Көйгөйүн оңдойлу: эгер элемент табылган болсо,
break колдонуп, циклди аяктайбыз:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
break; // циклди аяктайбыз
}
}
?>
Эми келгиле, массивде 3 мааниси бар элемент
такыр жок болсо, '---' чыкканына аракет кылалы. Кеңири
таралган ката - бул биздин if'ке
else кошуу - бул учурда '---'
3 болбогон бардык элементтерге
чыгат:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // 3 элементине чыгарат
} else {
echo '---'; // 1, 2, 4, 5 элементтерине чыгарат
}
}
?>
Ошентип, else кошуу идеясы - жаман
идея, иштебейт. Ушул сыяктуу типтеги
маселелерди чечүү үчүн (мындай маселелер жетиштүү
кездешет) ошол аталган flag'дарды колдонушат.
Жогоруда айтылгандай, flag - бул мындай
өзгөрмө, ал эки маанини гана кабыл ала алат:
true же false.
Ошентип, келгиле flag деген өзгөрмө жасайлы
төмөнкү маани менен: эгер ал true барабар болсо,
анда массивде 3 элементи бар, ал эми эгер
false болсо, анда мындай элемент жок.
Башында flag өзгөрмөсүн
false маанисине коёбуз - демек,
3 элементи массивде жок деп эсептейбиз:
$arr = [1, 2, 3, 4, 5];
$flag = false; // массивде 3 элементи жок деп эсептейбиз
Андан кийин биз мурун кылгандай циклди
if менен иштетебиз. Эгер цикл массивде
3 элементи бар экенин тапса - анда flag өзгөрмөсүн
true маанисине коёбуз жана циклден
break колдонуп чыгабыз:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false; // массивде 3 элементи жок деп эсептейбиз
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true; // элемент бар - $flag өзгөрмөсүн кайра аныктайбыз
break; // циклден чыгабыз
}
}
?>
Массивде 3 барбы
же жокпу деген суроого жооп берүүгө биз циклден кийин гана мүмкүнбүз.
Жана бул жооп бизде бар: циклден кийин
flag өзгөрмөсү false болуп кала алат
же маанисин true өзгөртө алат,
эгер цикл массивде 3 тапса:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
// бул жерде $flag өзгөрмөсү true же false барабар
?>
Эми циклден кийин биз if жасай алабыз, ал
flag өзгөрмөсүн карап чыгып,
экранга '+++' же '---' чыгарат:
<?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 '---';
}
?>
Массив берилген:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
?>
Бул массивде 'c' элементи
барбы же жокпу экендигин текшериңиз.
Эгер бар болсо - '+++' чыгарыңыз,
ал эми жок болсо - '---' чыгарыңыз.
Сандын жөнөкөй же жөнөкөй эмес экенин текшерүүчү код жазыңыз. Жөнөкөй сан бир гана бирге жана өзүнө бөлүнөт, жана башка сандарга бөлүнбөйт.