PHP-те флагтармен жұмыс
Қазір біз флагтарпен жұмыс істеуді үйренеміз.
Флаг - бұл тек екі мән қабылдай алатын
арнайы айнымалы: true
және false. Флагтардың көмегімен
бірдеменің жоқтығын тексеретін есептерді
шешуге болады:
мысалы, массивте белгілі бір мәні бар элементтің
жоқ екенін тексеруге болады. Бастайық.
Келесі есепті шешейік: сандар массиві берілген,
онда 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 қосу - бұл жаман
идея, жұмыс істемейтін. Осындай түрдегі есептерді
(мұндай есептер жиі кездеседі) шешу үшін
флагтар деп аталатын әдісті қолданады.
Жоғарыда айтылғандай, флаг - бұл
екі мән қабылдай алатын айнымалы:
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' элементі бар екенін тексеріңіз.
Егер бар болса - '+++' шығарыңыз,
ал жоқ болса - '---' шығарыңыз.
Санды жай сан ба, жоқ па екенін тексеретін код жазыңыз. Жай сан тек бірге және өзіне ғана бөлінеді, және басқа сандарға бөлінбейді.