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++ – հաշվիչի ավելացում մեկով՝ հաջորդ կրկնության համար։