Slučky v PHP. Slučky foreach, zatiaľ čo for v php

  • 20.06.2020

Posledná aktualizácia: 1.11.2015

PHP, podobne ako iné programovacie jazyky, používa slučky na vykonávanie opakujúcich sa akcií. PHP má nasledujúce typy slučiek:

pre slučku

Cyklus for má nasledujúcu formálnu definíciu:

Pre ([inicializácia počítadla]; [podmienka]; [zmena počítadla]) ( // akcie )

Zvážte štandardný cyklus for:

"; } ?>

Prvá časť deklarácie cyklu – $i = 1 – vytvára a inicializuje počítadlo – premennú $i. A pred vykonaním cyklu sa jeho hodnota bude rovnať 1. V podstate je to to isté ako deklarovanie premennej.

Druhou časťou je podmienka, za ktorej sa cyklus vykoná. V tomto prípade bude cyklus bežať, kým $i nedosiahne 10.

Treťou časťou je zvýšenie počítadla o jednu. Opäť nemusíme zvyšovať o jednu. Môžete znížiť: $i--.

Výsledkom je, že blok slučky prebehne 9-krát, kým sa hodnota $i nestane rovnou 10. A zakaždým sa táto hodnota zvýši o 1. Každé samostatné opakovanie cyklu sa nazýva iterácia. V tomto prípade teda prebehne 9 iterácií.

pričom slučka

Cyklus while kontroluje pravdivosť nejakej podmienky a ak je podmienka pravdivá, potom sa vykoná blok výrazu slučky:

"; $counter++; ) ?>

Ak je v bloku while iba jeden príkaz, zložené zátvorky bloku možno vynechať:

"; ?>

do..pričom slučka

Cyklus do..while je podobný cyklu while, len sa teraz vykoná blok slučky a až potom sa kontroluje podmienka. To znamená, že aj keď je podmienka nepravdivá, blok slučky sa vykoná aspoň raz:

"; $counter++; ) while($counter<10) ?>

pokračovať a prerušiť výroky

Niekedy nastane situácia, keď chcete opustiť slučku bez čakania na jej dokončenie. V tomto prípade môžeme použiť príkaz break:

80) ( break; ) echo „Štvorec $i je $výsledok
"; } ?>

A ak sa zrazu ukáže, že výsledok operácie je viac ako 80, slučka sa ukončí.

Príkaz continue sa používa aj na riadenie slučiek. Preskočí na ďalšiu iteráciu cyklu:

"; } ?>

Keď sa program spustí, keď sa hodnota $i rovná 5, dôjde k prechodu na ďalšiu iteráciu a všetky ostatné výrazy, ktoré nasledujú po príkaze continue, sa nevykonajú.

Lekcia sa bude týkať príkazov cyklu php: cyklu php while, cyklu foreach, cyklu do while a cyklu for s počítadlom. Budú analyzované príklady ukončenia cyklu (v php - break and continue)

Syntax:

while (podmienka)( výrok 1; výrok 2; ... )

Zložené zátvorky sa v tejto konštrukcii vyžadujú, ak sa v slučke používa zložený príkaz: t.j. nie jeden, ale postupnosť niekoľkých operátorov. Ak existuje iba jeden operátor, zátvorky možno vynechať.

Ryža. 4.1. Príklad slučky while


výsledok:

1 2 3 4 5 6 7 8 9 10

Okrem toho môžete použiť alternatívna syntax:

while (podmienka): výrok 1; operátor 2; ...na konci;

Ryža. 4.2. Príklad alternatívneho použitia cyklu While


Príklad: Zobrazenie série čísel na obrazovke 4 7 10 13 16 19 22 ... Zobrazte celkovo 30 číslic. Použite While Loop php


Riešenie:
1 2 3 4 5 6 $suma = 1 ; zatiaľ čo ($i<= 30 ) { $sum += 3 ; $i ++; echo ($sum . " " ) ; }

$sum=1; zatiaľ čo ($i<=30){ $sum+=3; $i++; echo ($sum." "); }

výsledok:

4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82 85 88 91 94

Príklad: Výstupné výkony dvoch až 1024



Riešenie:

do ( príkaz 1; príkaz 2; ... ) while (podmienka);

V tejto konštrukcii sa vyžadujú zložené zátvorky bez ohľadu na počet príkazov slučky.

Ryža. 4.3. Príklad slučky Do While


výsledok:

1 2 3 4 5 6 7 8 9 10

Príklad: Zobrazte sériu čísel 4 7 10 13 16 19 22.. . Celkový výber 30 čísla



Riešenie:

for (počiatočná hodnota počítadla; podmienka pokračovania cyklu; zmena počítadla pri každej iterácii) (príkaz 1; príkaz 2; ...; )

  • Po servisnom slove pre v zátvorkách cez; musí byť uvedené 3 parameter.
  • Cyklus For v php môže byť bez zložených zátvoriek, ak je v tele cyklu iba jeden príkaz.

Ryža. 4.4. Pre príklad slučky


výsledok:

Ahoj!
Ahoj!
Ahoj!
Ahoj!
Ahoj!

  • PHP podporuje alternatívnu syntax pre cyklus for:
  • for (počiatočná hodnota počítadla; podmienka pokračovania cyklu; zmena počítadla pri každej iterácii): príkaz 1; operátor 2; ...; endfor;

Príklad: Zobrazte čísla od 1 do 10 v okne prehliadača


Riešenie:
1 2 3 pre ($i = 1; $i<= 10 ; $i ++ ) { echo $i . " " ; }

pre ($i = 1; $i<= 10; $i ++) { echo $i." "; }

výsledok:

Laboratórne práce:
nakresliť násobilku

1. fáza

  1. Vytvorte dve číselné premenné stĺpce a riadky
  2. Priraďte k vytvoreným premenným ľubovoľné hodnoty v rozmedzí od 1 predtým 10

2. fáza

  1. Pomocou slučiek vykreslite tabuľku násobenia ako tabuľku HTML s nasledujúcimi podmienkami:
  • Počet stĺpcov sa musí rovnať hodnote premennej cols
  • Počet riadkov sa musí rovnať hodnote riadkov premennej
  • Bunky na priesečníku stĺpcov a riadkov musia obsahovať hodnoty, ktoré sú súčinom sériových čísel stĺpca a riadku
  • Odporúčajú sa cykly pre
  • 3. fáza

    • Hodnoty v bunkách prvého riadku a prvého stĺpca musia byť vykreslené tučným písmom
    • Farba pozadia buniek v prvom riadku a prvom stĺpci sa musí líšiť od farby pozadia tabuľky. Uložte súbor.

    Pridať kód:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 " ; for ($td = 1 ; ...; ... ) ( if (... ) ( echo "";) inak (echo" ";)) echo"" ; } ?>
    " , $tr * $td , "" , $tr * $td ,"

    "; for($td=1; ...; ...)( if(...)( echo " "; )inak( echo " ";)) echo""; } ?>
    ", $tr * $td,"", $tr * $td,"

    Počet prvkov poľa

    Pre pohodlie práce s poliami sa často používa funkcia count ().

    Funkcia vráti počet prvkov poľa

    pocet($masiv) ;

    Príklad: Dané pole pozostávajúce z názvov ročných období. Je potrebné zobraziť všetky prvky poľa neznámej veľkosti


    Riešenie:
    1 2 3 4 5 6 7 8 9 $mas[$n]" . "
    " ; } ?>

    "; } ?>

    výsledok:

    slučka foreach v php

    Pole sa prechádza najvýhodnejším spôsobom pomocou iteračnej slučky pre každý, prevzatý zo syntaxe jazyka Perl.


    Ryža. 4.6. Príklad slučky Foreach, plná verzia


    výsledok:

    Pole na indexe 0 je 1
    Pole na indexe 1 je 2
    Pole na indexe 2 je 3
    Pole na indexe 3 je 4

    Príklad: Vytlačte indexy a hodnoty používateľského poľa, ktoré obsahuje informácie o Ivanovi


    Riešenie:
    1 2 3 4 5 6 7 8 $user [ "meno" ] = "Ivan" ; $user[ "login" ] = "root" ; $user["heslo"] = " [chránený e-mailom]" ; $user = "312-34-85" ; foreach ($user ako $index => $value ) ( echo "Index $index sa rovná $hodnote
    "
    ; }

    $user["meno"]="Ivan"; $user["login"]="root"; $user["heslo"]=" [chránený e-mailom]"; $user="312-34-85"; foreach($user ako $index =>$hodnota)( echo "$index sa rovná $hodnota
    "; }

    výsledok:

    Príklad:

    1. Zobraziť pozdrav pre mená zo zoznamu
    2. Okrem pozdravu zobrazte v zozname aj čísla
    1 2 3 4 5 6 7 8 9 10 $names = pole ("Ivan" , "Peter" , "Semyon" ) ; // 1 úloha pre každého ($names ako $val ) ( echo "Ahoj, $val
    "
    ; ) // úloha 2 pre každého ($names ako $k => $val ) ( echo "Ahoj, $val! Ste na zozname pod číslom $k
    "
    ; }

    $names = array("Ivan","Peter","Semyon"); // 1 úloha pre každého ($names ako $val) ( echo "Ahoj $val
    "; ) // úloha 2 pre každého ($names ako $k => $val) ( echo "Ahoj $val! Ste $k na zozname
    "; }

    výsledok:

    Úloha PHP 4_3: Dané pole pozostávajúce z názvov dní v týždni. Získajte prvky pomocou konštrukcie foreach.

    Okrem toho: výstup by mal byť vo formáte: pondelok - deň 1



    Laboratórne práce:
    Nakreslite (pridajte) navigačnú ponuku na stránku, ako je táto:

    <a href="contact.php"> kontakt</a>

    kontakt

    pomocou poľa ako štruktúry ponuky.

    Algoritmus:

    1. Vytvorte asociatívne pole $menu
    2. Naplňte pole nasledujúcimi podmienkami:
    • Index prvku poľa je položka ponuky, napríklad: Domov, O, kontakt
    • Hodnota prvku poľa je názov súboru, na ktorý bude odkaz ukazovať, napríklad: index.php, o.php, kontakt.html
  • Pomocou cyklu foreach nakreslite vertikálne menu, ktorého štruktúra je opísaná v poli $menu
  • Tento článok píšem pre začiatočníkov, ktorí sa len začínajú učiť PHP. V tomto článku poviem o rôznych slučky v PHP, keďže tento článok nebol na mojej stránke. Boli len, ale napriek všeobecnej podobnosti to stále nie je to isté. AT PHP existuje 4 typy cyklov.

    1. WHILE
    2. DO-WHILE
    3. PRE KAŽDÝ

    Poďme si ich zoradiť podľa poradia a začnime tými najobľúbenejšími. slučka v PHP(a nielen v PHP) - toto je slučka FOR. Syntax pre túto slučku je:

    Pre(Výraz_1; Výraz_2; Výraz_3) (
    operátorov
    }

    Výraz_1 vykonaný okamžite a bezpodmienečne, Výraz_3 vykonaný po každej iterácii cyklu. Výraz_2 je test, či má slučka pokračovať. Ak je výsledkom výrazu pravda, potom začne ďalšia iterácia cyklu a ak falošné, potom sa cyklus ukončí.

    Ďalším typom slučky je WHILE. Toto je jednoduchší typ slučky, ktorej syntax je nasledovná:

    Kým(Výraz) (
    operátorov
    }

    Zbohom Výraz sa vracia pravda, slučka sa spustí a hneď ako sa objaví falošné, prestane fungovať.

    slučka DO-WHILE veľmi podobný WHILE, ale s jedným rozdielom. Výstupná podmienka sa kontroluje po dokončení iterácie, nie skôr. Táto slučka sa teda vždy vykoná minimálne 1 raz. A tak Syntax cyklu DO-WHILE:

    Do(
    operátorov
    )pričom(Podmienka);

    A nakoniec posledným typom cyklov je pre každý, ktorý slúži iba na iteráciu cez polia a objekty. Je potrebné, keď kľúče poľa nie sú čísla (ktoré sa dajú ľahko iterovať cez to isté PRE) a struny. FOREACH Syntax slučkyĎalšie:

    Foreach($array_or_object as $key => $value) (
    operátorov
    }

    A nakoniec všetko aplikujme 4 typy slučiek v PHP na iteráciu cez polia:

    $zoznam = pole(5, 2, 3, 10, 12, 10);
    $pole = pole("a" => 1, "x" => 10, "m" => -5);
    pre ($i = 0; $i< count($list); $i++) {
    echo $list[$i]."; ";
    }
    ozvena"
    ";
    $i = 0;
    zatiaľ čo ($i< count($list)) {
    echo $list[$i]."; ";
    $i++;
    }
    ozvena"
    ";
    $i = 0;
    robiť (
    echo $list[$i]."; ";
    $i++;
    )pričom($i< count($list));
    ozvena"
    ";
    foreach ($array ako $key => $value) (
    echo "$kľúč = $hodnota; ";
    }
    ?>

    Každý programátor musí poznať všetky tieto cykly naspamäť, takže ak niečo nie je jasné, prečítajte si to znova alebo položte otázku v komentároch a pokúsim sa odpovedať.

    Príkazy slučky sa veľmi často používajú v akomkoľvek programovacom jazyku. Takmer všetky úlohy používajú slučky, preto stojí za to venovať osobitnú pozornosť ich štúdiu. V PHP sú 4 typy slučiek:

    • while (kontrola stavu predpony);
    • robiť..pričom (kontrola stavu po poperfixe);
    • pre;
    • pre každý ;

    Prvé tri slučky sú podobné štandardným slučkám z programovacích jazykov (C++, Pascal) a posledná (foreach) je podobná Perlu. Pozrime sa na prvé tri príkazy cyklu oddelene a posledným sa budeme venovať v samostatnej lekcii. Všimnite si, že každá zo slučiek umožňuje vnorené slučky, to znamená slučku v rámci slučky.

    while loop v PHP

    Pomerne jednoduchý príkaz slučky, ktorého syntax je veľmi podobná syntaxi v iných programovacích jazykoch.

    Syntax while v PHP je:

    //môže ísť o komplexnú boolovskú podmienku( operátori; ) ?>

    Podmienka je výraz, ktorý musí byť buď pravdivý (true) alebo nepravdivý (false). Ak je podmienka pravdivá, vykonajú sa príkazy v zložených zátvorkách. Potom sa podmienka opäť skontroluje na pravdivosť. Ak je podmienka nepravdivá, potom program nevstúpi do cyklu. V prípade jedného výroku možno zložené zátvorky vynechať.

    Poznámka: podmienka môže pozostávať z veľmi mnohých výrazov využívajúcich algebru logiky &&, ||, ! atď.

    Stojí za to venovať pozornosť skutočnosti, že ak sú v stave operátori, musia sa nejako zmeniť, inak sa slučka jednoducho zacyklí.

    Tu je jednoduchý príklad použitia while:

    "; $i++; ) ?>

    Vyššie uvedený príklad prinesie nasledujúci výsledok:

    i = 0
    i = 1
    i = 2
    i = 3
    i = 4

    Všimnite si, že $i=5 sa nevytlačí, pretože i sa zvyšuje na samom konci cyklu, a preto, akonáhle dosiahne 5, podmienka pre vstup do cyklu jednoducho nebude splnená.

    Break príkaz v PHP

    Na okamžité ukončenie cyklu existuje špeciálny príkaz break. Tento operátor sa často používa na ukončenie nekonečnej slučky, keď je podmienka vždy pravdivá. Napríklad vyššie uvedený príklad by mohol byť napísaný takto:

    //podmienka je vždy pravdivá( echo "i =".$i."
    "; $i++; if($i>=5) break; ) ?>

    Výsledok bude rovnaký ako v predchádzajúcom príklade.

    príkaz pokračovať v PHP

    pokračovať vo vyhlásení; ukončí aktuálnu iteráciu cyklu, posunie sa na začiatok, ale neukončí cyklus úplne. Napríklad:

    //podmienka je vždy pravdivá( echo "i =".$i."
    "; $i++; if($i>=5) break; else continue; ) ?>

    Výsledok tohto príkladu bude rovnaký ako v predchádzajúcich príkladoch.

    Ako ukazuje prax, pokračujte; a zlomiť často pomáhajú realizovať zložité cykly.

    Tu je ďalší príklad použitia cyklu while:

    "; } //výsledky týchto dvoch while sa budú líšiť //v dôsledku postprefixu a prefixového tvaru$i=0; while (++$i //forma predpony ( echo "i =".$i."
    "; } ?>

    do... while loop v PHP

    Príkaz do...while je veľmi podobný bežnému príkazu while. Ich jediný rozdiel je v čase kontroly stavu. Cyklus do...while sa vykoná aspoň raz, pretože kontrola sa uskutoční na samom konci. Syntax do...pričom:

    Zvážte príklad:

    "; $i++; ) while($i

    Jeho výsledok je podobný prvým uvažovaným príkladom.

    Stojí za zmienku, že pokračovať; a zlomiť možno použiť aj v takýchto cykloch.

    for loop v PHP

    Syntax príkazu for je nasledovná:

    Na začiatku prebieha inicializácia premenných. usloviya musí obsahovať jednu alebo viac podmienok ukončenia slučky. Shag obsahuje príkazy, ktoré sa vykonajú na konci každej iterácie. Napríklad:

    "; } ?>

    Výsledok vykonania tejto slučky bude rovnaký ako v predchádzajúcich príkladoch.

    Veľkou výhodou použitia for je, že telo slučky možno vynechať a všetky potrebné operácie sa vykonávajú v časti shag. Pre prehľadnosť uvádzame príklad:

    ", $i++); ?>

    Komentujte: echo nie je povolené v shag .

    Krok cyklu a podmienky môžu byť veľmi rôznorodé. Môžete napríklad napísať nie i++, ale i+=5 (prírastok o 5).

    Každá sekcia cyklu for môže byť vynechaná, výsledkom čoho je nekonečná slučka:

    pre umožňuje použitie pokračovať; a zlomiť .

    Nakoniec uvedieme príklad dvoch ekvivalentných konštrukcií cyklu, ale jeden bude for a druhý while

    Zodpovedá nasledujúcemu:

    Syntax cyklu for je nasledovná:

    Táto slučka pozostáva z kľúčového slova for, za ktorým nasledujú zátvorky obsahujúce tri výrazy vo vnútri oddelené bodkočiarkou. Má nasledujúci príkaz na vykonanie:

    1. Na začiatku cyklu sa vykoná inicializačný výraz, vyhodnotí sa (vykoná) vždy len raz na úplnom začiatku.
    2. Ďalej prichádza podmienený výraz. Pred začiatkom každej iterácie sa vyhodnotí hodnota podmieneného výrazu (podmienka vykonania), ak sa vyhodnotí ako TRUE, vykoná sa telo cyklu, ak sa vyhodnotí ako FALSE, vykonávanie cyklu sa skončí. Ak je podmienka pri prvom teste nepravdivá, telo cyklu sa nikdy nevykoná.
    3. Na samom konci, po vykonaní akcií v tele cyklu, sa spracuje posledný výraz (nasledujúci výraz po podmienke). V tomto prípade ide o inkrementačný výraz - inkrementuje hodnotu premennej počítadla pomocou inkrementu.

    Jednoduchý príklad cyklu for:

    V skutočnosti je cyklus for takmer univerzálny v tom, že sa dá použiť rôznymi spôsobmi.

    pre slučku bez častí hlavičky

    Každý z výrazov v hlavičke cyklu for môže chýbať.

    Ak inicializácia nie je potrebná alebo sa vyskytuje inde, inicializačný výraz nie je potrebný. Trochu prepíšme predchádzajúci príklad:

    Všimnite si, že bodkočiarka je povinná, pretože znamená chýbajúci výraz. Neprítomnosť výrazu podmienky je ekvivalentná umiestneniu TRUE do podmienky.

    V tomto prípade bude slučka bežať neurčito. Ak neexistuje inkrementujúci výraz, potom musí byť v tele cyklu, inak sa bude cyklus vykonávať na neurčito.

    Nezabudnite, že ktorýkoľvek z troch výrazov alebo všetky naraz je možné vynechať, ale vždy by ste mali nastaviť oddeľovacie bodkočiarky (;).

    Viaceré výrazy v hlavičke cyklu for

    V hlavičke cyklu for môže každý výraz oddelený bodkočiarkou obsahovať viacero výrazov oddelených čiarkou. Preto je možné použiť výrazy akejkoľvek zložitosti.

    "; } ?>

    Ak sa v podmienke vykonania použije viacero výrazov oddelených čiarkami, vyhodnotia sa všetky, ale výsledok sa prevezme z posledného.

    Vnorené slučky

    Rovnako ako podmienené príkazy, aj cykly môžu byť vnorené. Jednoduchý príklad s jednou úrovňou vnorenia:

    "; pre ($j = 0; $j< 2; $j++) { echo "Вложенный цикл.
    "; } } ?>