Zanke v PHP. Primer spreminjanja vrednosti elementa polja v zanki foreach

04.12.2023

Sintaksa za zanko for je naslednja:

Ta zanka je sestavljena iz ključne besede za , ki ji sledijo oklepaji, ki vsebujejo tri izraze znotraj, ločene s podpičji. Ima naslednji vrstni red izvajanja:

  1. Na začetku zanke se izvrši inicializacijski izraz; vedno se ovrednoti (izvede) samo enkrat na samem začetku.
  2. Sledi pogojni izraz. Pred začetkom vsake iteracije se izračuna vrednost pogojnega izraza (izvedbeni pogoj), če je ovrednoten TRUE, potem se izvede telo zanke, če je ovrednoten FALSE, je zanka dokončana. Če je pogoj pri prvem preizkusu napačen, telo zanke ne bo izvedeno niti enkrat.
  3. Čisto na koncu, po izvedbi dejanj v telesu zanke, se obdela zadnji izraz (naslednji izraz po pogoju). V tem primeru je to povečevalni izraz - povečuje vrednost spremenljivke števca.

Preprost primer zanke for:

Pravzaprav je zanka for skoraj univerzalna, saj omogoča najrazličnejše uporabe.

za zanko brez delov glave

Morda manjkajo vsi izrazi v glavi zanke for.

Če inicializacija ni potrebna ali se zgodi drugje, inicializacijski izraz ni potreben. Prepišimo prejšnji primer malo na novo:

Upoštevajte, da je podpičje obvezno, ker označuje manjkajoči izraz. Odsotnost izraza pogoja je enakovredna postavitvi vrednosti TRUE v pogoj.

V tem primeru bo zanka potekala neskončno. Če izraza za povečevanje ni, mora biti v telesu zanke, sicer se bo zanka izvajala neskončno.

Upoštevajte, da lahko katerega koli ali vse tri izraze izpustite, vendar morate vedno uporabiti podpičja (;).

Več izrazov v glavi zanke for

V glavi zanke for lahko vsak izraz, ločen s podpičjem, vsebuje več izrazov, ločenih z vejicami. Zato je mogoče uporabiti izraze katere koli zapletenosti.

"; } ?>

Če pogoj izvajanja uporablja več izrazov, ločenih z vejicami, so ovrednoteni vsi, vendar je rezultat vzet iz zadnjega.

Ugnezdene zanke

Tako kot pogojni stavki so lahko tudi zanke ugnezdene. Preprost primer z eno stopnjo gnezdenja:

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

Zelo pogosto morate pri pisanju skriptov večkrat izvesti isto dejanje. Temu so namenjeni cikli. Zanke v php, tako kot v drugih jezikih, so razdeljeni na več vrst:

  1. Zanka s števcem for
  2. Zanka s pogojem while, do-while
  3. Zanka za prečkanje nizov za vsakega

Na primer, ko ustvarjamo spletno trgovino, moramo pred prikazom izdelkov na zaslonu odstraniti izdelke, katerih stanje na zalogi je manjše od 10. Za to moramo zanko po matriki z blagom in s pogojnim operatorjem if preverimo število blaga v skladišču in iz matrike odstranimo vse blago, katerega vrednost v skladišču je manjša od 10.

Zanka for v PHP

Zanka s števcem for- izvedeno določeno število krat. Poglejmo primer:

"; } ?>

V tem primeru bo zanka izvedena 11-krat. Od 0 (ker je spremenljivka $i = 0) do 10 (ker je $i<= 10). Каждую итерацию $i будет увеличено на 1 ($i++). Чтобы было понятней, сделаем еще один пример:

"; } ?>

Zanka bo potekala od 5 do 9($i< 10 (в предыдущем примере было <= 10)).

Zanko lahko izvedete tudi v obratnem vrstnem redu:

5; $i--) ( echo "Številka ponovitve: $i
"; } ?>

Cikel se bo izvajal od 10 do 5.

Cikel je mogoče izvesti tudi z določenim korakom, poglejmo primer:

"; } ?>

Zanka bo izvedla 3 ponovitve (0, 5, 10) s korakom 5. Vsako ponovitev bo števec zanke povečan za 5.

zanko foreach v PHP

foreach zanka- najpogostejši cikel. Zahtevano v skoraj vseh skriptih, zlasti če skript PHP deluje z bazami podatkov. Uporablja se za prečkanje nizov.

Na primer, poglejmo majhen primer:

$value) ( ​​​​echo "Ključ: $key, vrednost: $value
"; } ?>

Ko zaženete skript, boste videli:

Ključ: 0, Vrednost: rdeča Ključ: 1, Vrednost: modra Ključ: 2, Vrednost: zelena Ključ: barva, Vrednost: rumena Ključ: test, Vrednost: design studio ox2.ru

Medtem ko zanka v PHP

medtem ko zanka se uporablja za izvajanje zanke, dokler je izpolnjen pogoj. Če pogoj ni nikoli izpolnjen, bo zanka prešla v zanko.

Poglejmo primer:

"; } ?>

Na zaslonu bomo videli številke od 1 do 19

Zanka do-while v PHP:

Cikel do-while- deluje popolnoma enako kot medtem ko zanka, edina razlika je v tem, da je pogoj izpolnjen po ponovitvi. Napišimo primer:

"; ) medtem ko ($i< 20); //Выполняем цикл до те пор, пока $i < 20 ?>

Na zaslonu bomo videli številke od 1 do 20. Upoštevajte, da v prejšnjem primeru z medtem ko zanka bilo od 1 do 19, saj pogoj je bil izpolnjen pred ponovitvijo zanke.

Da bi prekiniti krog obstaja funkcija prekinitve, ona dovoli izstopiti iz zanke, ne glede na to, koliko ponovitev je ostalo do konca zanke.

Če želite preskočiti ponovitev in se premakniti na naslednjo ponovitev, obstaja nadaljevanje funkcije.

Pri izdelavi spletnih strani se skoraj vedno uporabljajo cikli, ne glede na ceno izdelave strani, funkcionalnost in ostalo. Zato jih jemljite resno!

Zelo pogosto morate pri pisanju skriptov večkrat izvesti isto dejanje. Temu so namenjeni cikli. Zanke v PHP, tako kot v drugih jezikih, delimo na več vrst: Zanka s števcem za Zanka s pogojem a while, do-while Zanka za prečkanje nizov foreach

OX2 2014-10-02 2014-10-02

Pogosto je priročno, da lahko zanko prekinete predčasno, ko nastopijo določeni pogoji. Operater break nudi to priložnost. Deluje s konstrukcijami, kot so: while, do while, for, foreach ali switch.

Stavek break lahko sprejme izbirni številski argument, ki mu pove, koliko ugnezdenih struktur naj zaključi. Privzeta vrednost številskega argumenta je 1, kar prekine trenutno zanko. Če je v zanki uporabljen stavek switch, potem break/break 1 zapusti samo konstrukcijo switch.

\n"; break 1; /* Izhod samo iz konstrukcije stikala. */ case 10: echo "Iteracija 10; gremo ven
\n"; break 2; /* Izhod iz konstrukcije stikala in zanke while. */ ) ) // še en primer za ($bar1 = -4; $bar1< 7; $bar1++) { // проверка деления на ноль if ($bar1 == 0) { echo "Выполнение остановлено: деление на ноль невозможно."; break; } echo "50/$bar1 = ",50/$bar1,"
"; } ?>

Seveda bi včasih raje preprosto preskočili eno od ponovitev zanke, namesto da bi zanko popolnoma zaključili; v tem primeru se to naredi s stavkom continue.

nadaljevati

Če želite ustaviti obdelavo trenutnega bloka kode v telesu zanke in se premakniti na naslednjo ponovitev, lahko uporabite stavek continue. Od operatorja break se razlikuje po tem, da ne ustavi zanke, ampak se preprosto premakne na naslednjo ponovitev.

Operator continue lahko, tako kot break, sprejme izbirni številski argument, ki nakazuje, na koliko ravneh ugnezdenih zank bo preostali del ponovitve preskočen. Privzeta vrednost številskega argumenta je 1, ki preskoči samo preostanek trenutne zanke.

"; nadaljuj; ) echo "50/$bar1 = ",50/$bar1,"
"; } ?>

Upoštevajte, da je bila med izvajanjem zanke ničelna vrednost spremenljivke $counter preskočena, vendar se je zanka nadaljevala z naslednjo vrednostjo.

Pojdi do

goto je brezpogojni operator skoka. Uporablja se za skok na drug del programske kode. Mesto, kamor morate iti v programu, je označeno z oznako (enostavni identifikator), ki ji sledi dvopičje. Če želite nadaljevati, se želena oznaka postavi za stavek goto.

Preprost primer uporabe stavka goto:

Stavek goto ima nekaj omejitev pri uporabi. Ciljna oznaka mora biti v isti datoteki in v istem kontekstu, kar pomeni, da ne morete skočiti izven meja funkcije ali metode in ne morete skočiti znotraj ene od njiju. Prav tako ne morete skočiti znotraj nobene zanke ali stavka switch. Lahko pa se uporabi za izhod iz teh konstruktov (iz zank in stavkov switch). Običajno se stavek goto uporablja namesto večnivojskih stavkov za prekinitev.

"; ) echo "po zanki - pred oznako"; // navodilo ne bo izvedeno end: echo "Po oznaki"; ?>

V nekaterih primerih je potrebno kodo izvajati, dokler ne dosežemo želenega rezultata. Za to ponuja PHP zanke while, for in foreach.

Sintaksa zanke v PHP

Sintaksa cikelmedtem:

Primer uporabe zanke while v PHP:

V zgornjem primeru zanke php while se spremenljivka števca $i najprej inicializira na 0.

Pogoj zanke while je $i< 10 . Это означает, что мы проверяем, меньше ли переменная, чем 10.

Vse, kar je v zavitih oklepajih, so navodila (telo) zanke. Ponavljajo se, dokler je pogoj resničen. V zgornjem primeru je $i natisnjen na zaslon, nato pa se spremenljivka števca poveča za 1. To je pomembno, da pogoj zanke na koncu ne uspe. Če je pogoj zanke vedno izpolnjen, na primer zato, ker ste pozabili povečati spremenljivko števca $i , bo skript vstopil v neskončno zanko. Na srečo bo PHP čez nekaj časa prenehal izvajati vaš skript.

Pogoj zanke in telo zanke lahko naredite tako kompleksna, kot želite. Na primer, uporabite medtem ko znotraj, medtem ko php, uporabite php, medtem ko ponavljate skozi matriko ( array ) ali definirajte več kot eno spremenljivko števca:

$min) ( echo "count1: $count1; count2: $count2
"; $ counter1 += 2; // Skrajšani izraz za $counter1 = $counter1 + 2; $counter2 -= 3; // Skrajšan izraz za $count2 = $count2-3; ) ?>

Primer definira dve spremenljivki: $ counter 1 in $ counter 2 . Ena spremenljivka se poveča za 2, druga pa se zmanjša za 3. Zanka while teče, dokler sta izpolnjena oba pogoja $ count 1< $ max и $ count 2 >$ min.

Učinek prekinitve in nadaljevanja ključnih besed na zanko

Uporaba ukaza odmor Lahko prekine izvajanje zanke while PHP. Recimo, da iščemo določenega uporabnika. Nato lahko pregledate vse uporabnike v zanki while. Če najdemo pravega uporabnika, bomo zanko ustavili s ključno besedo odmor.

Preprost primer uporabe ključne besede break:

medtem ko ($count< $max) { if ($count == 10) { echo "Останавливаемся на числе 10"; break; } echo "$count,"; $counter += $increment; // увеличивает $count на значение $increment } ?>

Ta koda ponavlja števila v naraščajočem vrstnem redu od 0 do $max = 30, pri čemer spremenljivki $count doda vrednost $increment, z drugimi besedami, število 2. Če pa je spremenljivka $count enaka 10, bo naslednje zgodi se: izhod iz zanke while php.

Ključna beseda nadaljuje ne prekine zanke medtem ko je v php popolnoma, vendar samo preskoči preostali del telesa zanke. Spodnji primer to dokazuje:

medtem ko ($count< $max) { $counter += $increment; // увеличивает $payer на $increment if ($count >= 10 && $count<= 15) { echo "Число между 10 и 15
"; nadaljuj; )

echo "$štetje
"; } ?>

Ta zanka se začne pri 0 in poveča števec do $max. Spremenljivka $counter se vedno poveča za vrednost spremenljivke $increment. To pomeni, da ima vrednosti 0, 2, 4 itd.

Če ima spremenljivka $count vrednost med 10 in 15, bosta besedilo in izjava natisnjena na zaslon nadaljevati bo preskočil druge izraze v telesu zanke. Kot rezultat vidimo, da številke 10, 12 in 14 niso izpisane.

do-while zanka v PHP

Manjša sprememba medtem je zanka do - while. V tem primeru se pogoj zanke preveri šele po izvedbi njenega telesa. To pomeni, da bo telo zanke izvedeno vsaj enkrat.

Sintaksa zanke do-while:

Recimo, da želimo ustvariti naključno število, ki mora biti med 0 in 10 ali med 20 in 30. V skladu z definicijo funkcije rand ( $ min, $maks) , lahko naključno ustvarite število med $ min in $maks:

10 && $naključno< 20) { $random = rand (0, 30); }

echo "Naše naključno število: $random"; ?>

Uporaba php zanke nareditimedtem, lahko dobite vrednost izraza brez inicializacije $random spremenljivke. Telo zanke se izvede, preden se preizkusi pogoj. Potem bi zgornji primer izgledal takole:

10 && $naključno< 20);

echo "Naše naključno število: $random"; ?>

Za začetnika je lahko zanka do-while nekoliko zmedena. Če ne razumete popolnoma njegovega namena, to ni problem. Zanke do-while se v praksi redko uporabljajo.

Če se v nizu, obdanem z enojnimi narekovaji, poševnica nazaj "\" pojavi pred katerim koli drugim znakom (razen "\" ali """), se obravnava kot običajen znak in se izpiše kot vsi drugi. Zato je poševnica nazaj escape je zahtevan samo, če je na koncu vrstice, pred zaključnim narekovajem.

V PHP obstaja več kombinacij znakov, ki se začnejo s poševnico nazaj. Te se imenujejo ubežna zaporedja in imajo posebne pomene, o katerih bomo govorili malo kasneje. Za razliko od drugih dveh sintaks torej spremenljivke in ubežna zaporedja za posebne znake, ki se pojavljajo v nizih v enojnih narekovajih, niso obdelani.

odmev "Lahko tudi vstavite v vrstice
znak nove vrstice tako,
ker je normalno"
;
// Izhod: Za izpis " potrebujete
// postavite \ pred njim
odmev "Za prikaz \" morate pred ".
"postavi jo \\";
// Izhodi: Ali želite izbrisati C:\*.*?
odmev "Ali želite izbrisati C:\\*.*?";
// Izhod: To ne bo vstavilo: \n
// nova vrstica
odmev "To ne bo vstavilo:\nnova vrstica";
// Izhodi: tudi spremenljivke $expand
// $either ni nadomeščen
odmev "Spremenljivke $expand so tudi $either".
"ni nadomeščen";
?>

16.1. Primer. Uporaba ubežnih zaporedij

17. Dvojni narekovaji

Če je niz v dvojnih narekovajih """, PHP prepozna več ubežnih zaporedij za posebne znake.

Nekateri od njih so prikazani v tabeli.
Tabela. Kontrolne sekvence.

Ponavljamo, če želite ubežati kateremu koli drugemu znaku, bo natisnjena tudi poševnica nazaj!

Najpomembnejša lastnost nizov z dvojnimi narekovaji je obravnavanje spremenljivk.

Heredoc

Drug način za definiranje nizov je uporaba sintakse heredoc. V tem primeru se mora vrstica začeti z znakom<<<, после которого идет идентификатор. Заканчивается строка этим же идентификатором. Закрывающий идентификатор должен начинаться в первом столбце строки. Кроме того, идентификатор должен соответствовать тем же правилам именования, что и все остальные метки в PHP: содержать только буквенно-цифровые символы и знак подчеркивания и начинаться не с цифры или знака подчеркивания.

Heredoc besedilo se obnaša enako kot niz v dvojnih narekovajih, ne da bi jih bilo. To pomeni, da vam v heredoc ni treba ubežati narekovajem, vendar lahko še vedno uporabite zgoraj navedena ubežna zaporedja.

Obdelujejo se tudi spremenljivke znotraj heredoc.

$str =<<Primer niza, ki obsega več
uporabo linij
sintaksa heredoc
EOD;
// Tukaj je identifikator EOD. Spodaj
// EOT identifikator
$name = "Vasya" ;
odmev<<Moje ime je "$name".
EOT;
// to bo natisnilo "Ime mi je "Vasja"."
?>

Primer. Uporaba sintakse heredoc
Opomba: Podpora za Heredoc je bila dodana v PHP 4.

18. Vrsta polja

Niz v PHP je urejen zemljevid - vrsta, ki pretvori vrednosti v ključe. Ta vrsta je optimizirana na več načinov, tako da jo lahko uporabite kot dejansko matriko, seznam (vektor), zgoščeno tabelo (ki je implementacija zemljevida), sklad, čakalno vrsto itd. Ker lahko imate kot vrednost drugo matriko PHP, lahko
prav tako je enostavno posnemati drevesa.

Matriko lahko definirate s konstrukcijo array() ali z neposrednim dodeljevanjem vrednosti njenim elementom. Uporaba definicije
array() array ( => vrednost,
=> vrednost1, ...)

Jezikovni konstrukt array() vzame pare ključ => vrednost kot parametre, ločene z vejicami. Simbol => ujema vrednost z njenim ključem. Ključ je lahko celo število ali niz, vrednost pa je lahko katera koli vrsta, ki je na voljo v PHP. Številski ključ matrike se pogosto imenuje indeks. Indeksiranje matrike v PHP se začne od nič.

Vrednost elementa matrike lahko dobite tako, da za imenom matrike v oglatih oklepajih navedete ključ elementa, ki ga iščete. Če je matrični ključ standardni celoštevilski zapis, se obravnava kot število; v nasprotnem primeru se obravnava kot niz.

Zato je pisanje $a["1"] enakovredno pisanju $a, tako kot je $a["-1"] enakovredno $a[-1].

$books = array("php" =>
"PHP uporabniški priročnik",
12 => drži );
echo $books [ "php" ];
//prikaže se "PHP uporabniški priročnik"
echo $books [12]; // bo izpisal 1
?>

18.1. Primer. Nizi v PHP

Če za element ključ ni določen, se kot ključ vzame največji številski ključ, povečan za eno. Če podate ključ, ki mu je že bila dodeljena vrednost, bo ta prepisan. Od PHP 4.3.0 dalje, če je največji ključ negativno število, bo naslednji matrični ključ nič (0).

// nizi $arr in $arr1 sta enakovredni
$arr = polje(5 => 43, 32, 56, "b" => 12);
$arr1 = polje(5 => 43, 6 => 32,
7 => 56, "b" => 12);
?>

18.2. Primer. Nizi v PHP

Če kot ključ uporabite TRUE ali FALSE, se njegova vrednost pretvori v eno oziroma nič tipa celo število. Če uporabimo NULL, bomo namesto ključa dobili prazen niz. Kot ključ lahko uporabite tudi sam prazen niz, vendar mora biti v narekovajih. Torej ni isto kot uporaba praznih oglatih oklepajev. Nizov in predmetov ni mogoče uporabiti kot ključe.

Definicija s sintakso oglatih oklepajev

Matriko lahko ustvarite tako, da vanj preprosto vpišete vrednosti. Kot smo že povedali, lahko vrednost elementa matrike dobite z oglatimi oklepaji, znotraj katerih morate navesti njegov ključ, na primer $book["php"]. Če podate nov ključ in novo vrednost, na primer $book["new_key"]="new_value", bo matriki dodan nov element. Če ključa ne podamo, ampak samo dodelimo vrednost $book="new_value", bo imel nov element matrike numerični ključ, ki je za eno večji od največjega obstoječega. Če matrika, ki ji dodajamo vrednosti, še ne obstaja, bo ustvarjena.

$books [ "ključ" ]= vrednost; // dodan v matriko
// vrednost $books
// vrednost s ključem
$knjige = vrednost1; /* dodan v matriko
vrednost value1 s
ključ 13, ker
največji ključ y
bilo nas je 12 */
?>

Če želite spremeniti določen element matrike, mu morate preprosto dodeliti novo vrednost in njegov ključ. Ključa elementa ne morete spremeniti, lahko le izbrišete element (par ključ/vrednost) in dodate novega. Če želite odstraniti element polja, morate uporabiti funkcijo unset().

$books = array("php" =>
"PHP uporabniški priročnik",
12 => drži );
$knjige =
"Knjiga o Perlu" ; // dodan element
// s ključem (indeks)
// 13 je enakovredno
// $knjige =
// "Knjiga o Perlu";
$books["lisp"] =
123456 ; /* To doda novo v matriko