PHP Դասեր - Դաս 12 - Շրջաններ while, foreach, for
Բավականին հաճախ ծրագրավորման մեջ, ինչպես նաև առօրյայում, մեզ անհրաժեշտ է կատարել կրկնվող գործողություններ, մինչև արդյունքը մեզ չբավարարի։ Առօրյայում դա կոչվում է տանջանք, իսկ ծրագրավորման մեջ՝ ցիկլեր (loops)։ Ցիկլերը շատ հաճախ կարելի է հանդիպել PHP-ում, որովհետև դա հարմար եղանակ է զանգվածները վերամշակելու, ֆունկցիաներ հաշվարկելու, և շատ այլ բաներ կատարելու համար։ Սկսենք ամենապարզ և ամենատարածված while ցիկլից։
PHP while ցիկլեր
while շատ պարզ է՝ կլոր փակագծերում գրում ենք պայմանը, ֆիգուր փակագծերում՝ գործողությունները, որոնք պետք է կատարվեն, երբ պայմանը ճշմարիտ է։ Պայմանը լոգիկական արտահայտություն է, որն ունի երկու արժեք՝ TRUE կամ FALSE։ Եթե ուզում եք ավելի լավ հասկանալ լոգիկական արտահայտությունները, խորհուրդ է տրվում կարդալ if օպերատորի մասին։ Այժմ մի օրինակ while ցիկլի համար՝
<?php
$counter = 5;
$newArray = array();
while($counter > 2){
$newArray[]= $counter;
$counter--;
}
print_r($newArray);
?>
Արդյունքում կարտածվեն զանգվածի տարրերը՝ 5, 4, 3։ Եկեք տեսնենք՝ ինչպես դա տեղի ունեցավ․
Քայլ 1. $counter = 5 (5 > 2)
Քայլ 2. $counter = 4 (4 > 2)
Քայլ 3. $counter = 3 (3 > 2)
Քայլ 4. $counter = 2 (2 = 2, պայմանը դադարում է բավարարվել, գործողությունը չի կատարվում և 2-ը զանգվածում չկա)
Եկեք դիտարկենք ևս մեկ օրինակ՝ ֆունկցիայի տաբուլյացիան՝ y(x) = 2x -1
<?php
// ֆունկցիա y(x) = 2x -1;
$x = -10;
while($x <= 10){
$y = 2*$x-1;
print 'y(' . $x . ')=' . $y . '<br />';
$x++;
}
?>
Արդյունքում սյունակով կարտածվեն y ֆունկցիայի արժեքները x-ի համար՝ [-10,10] միջակայքում։

Սա while ցիկլի բլոկ-սխեման է։ Սա ցիկլի ընդհանուր աշխատանքն է։ Մենք ունենք պայման, ունենք ցիկլի մարմին։ Քանի դեռ պայմանը բավարարվում է, ցիկլի մարմինը աշխատում է։ Երբ այն դադարում է բավարարվել՝ PHP-ն անցնում է հաջորդ կոդին։
ԵՎՍ ՄԵԿ ԿԱՐԵՎՈՐ պահ․ Եթե դուք հեռացնեք $x++ տողը, որի շնորհիվ մեր հաշվիչը փոփոխվում է, որպեսզի պայմանը դադարի բավարարվել, ապա ինչ կլինի եթե այն երբեք չդադարի՞։
<?php
// ֆունկցիա y(x) = 2x -1;
$x = -10;
while($x <= 10){
$y = 2*$x-1;
print 'y(' . $x . ')=' . $y . '<br />';
// $x++;
}
?>
Այդ դեպքում կլինի շատ վատ։ Կառաջանա կրիտիկական սխալ՝ մեր ցիկլի մարմինը կաշխատի անվերջ։ Այս իրավիճակը կոչվում է անվերջ ցիկլ։ Խուսափեք նման իրավիճակներից՝ դրանք կարող են պատճառ դառնալ կայքի անկայուն աշխատանքի կամ կաթվածի։
PHP foreach ցիկլեր
Եվս մեկ անհրաժեշտ ցիկլ է՝ հաճախ օգտագործվում է զանգվածը վերամշակելու համար։ «Վերամշակել» ասելով հասկանում եմ՝ վերցնել զանգվածի մեկ տարրը, կատարել գործողություն, հետո հաջորդ տարրը, նույն գործողությունը և այդպես շարունակ՝ բոլոր տարրերի համար։
Եկեք դիտարկենք օրինակ․ ունենք տասը տարր՝ "կարմիր" և "կապույտ", հաշվում ենք քանի հատ «կարմիր» կա՝
<?php
$counter = 0;
$newArray =array(
1=>'կարմիր',
2=>'կապույտ',
3=>'կապույտ',
4=>'կարմիր',
5=>'կարմիր',
6=>'կապույտ',
7=>'կարմիր',
8=>'կապույտ',
9=>'կարմիր',
10=>'կապույտ',
);
foreach($newArray as $key){
if($key == 'կարմիր'){
$counter++;
}
}
print 'Մեր մոտ կա ' . $counter . ' կարմիր տարր';
?>
Կարծում եմ՝ այս պարզ օրինակը հասկանալի է։ as օպերատորը օգտագործվում է տարրերը հերթականությամբ ստանալու համար։ Երբ տարրերը վերջանան՝ foreach-ը կդադարի։
Բայց ոչ բոլոր զանգվածներն են այդքան պարզ։ Կան նաև ներդրված զանգվածներ։ Դրանց յուրաքանչյուր ենթազանգված նույնպես կարելի է վերամշակել՝
<?php
$counter = 0;
$newArray = array(
1=>array(
1 => 'կարմիր',
2 => 'կապույտ',
3 => 'կապույտ',
),
2=>array(
1 => 'կարմիր',
2 => 'կարմիր',
3 => 'կապույտ',
)
);
foreach($newArray as $key){
foreach($key as $element){
if($element == 'կարմիր'){
$counter++;
}
}
}
print 'Մեր մոտ կա ' . $counter . ' կարմիր տարր';
?>
Կարծում եմ՝ foreach ցիկլը սկզբունքորեն արդեն հասկանալի է։ Այն դեռ շատ կտեսնեք հաջորդ օրինակներում։
FOR ցիկլ
for ցիկլը նման է while ցիկլին։ Սովորաբար այն օգտագործվում է, երբ ցիկլի կրկնությունների քանակը հայտնի է։ Օրինակ՝ 10 կամ 100 կրկնություն՝
for($i=0;$i<10;$i++){
//տասը կրկնություն
}
Եկեք տեսնենք՝ ինչ բաղադրիչներ ունի for ցիկլը՝
for(){
}
Ինչպես մյուս ցիկլերի դեպքում՝ բոլոր պարամետրերը գրում ենք կլոր փակագծերում։ Սովորաբար օգտագործվում են երեք պարամետր՝
1. $i=0 – հաշվիչի նախնական արժեքը։ Սա փոփոխականն է, որը կպահի կրկնության համարը։
2. $i<10 – պայմանը, որի դեպքում ցիկլը կշարունակվի։
3. $i++ – հաշվիչի ավելացում մեկով՝ հաջորդ կրկնության համար։