Ciklai PHP. Masyvo elemento vertės keitimo foreach cikle pavyzdys

04.12.2023

For ciklo sintaksė yra tokia:

Šią kilpą sudaro raktinis žodis , po kurio yra skliaustai, kuriuose yra trys išraiškos, atskirtos kabliataškiais. Jame yra tokia vykdymo tvarka:

  1. Ciklo pradžioje inicijavimo išraiška visada įvertinama (vykdoma) tik vieną kartą pačioje pradžioje.
  2. Toliau pateikiama sąlyginė išraiška. Prieš pradedant kiekvieną iteraciją, apskaičiuojama sąlyginės išraiškos reikšmė (vykdymo sąlyga), jei ji įvertinama į TRUE, tada vykdomas ciklo turinys, jei vertinamas FALSE, ciklas užbaigiamas. Jei sąlyga klaidinga pirmojo bandymo metu, kilpos turinys nebus vykdomas net vieną kartą.
  3. Pačioje pabaigoje, atlikus veiksmus ciklo korpuse, apdorojama paskutinė išraiška (kita išraiška po sąlygos). Šiuo atveju tai yra didėjanti išraiška – ji padidina skaitiklio kintamojo reikšmę.

Paprastas for ciklo pavyzdys:

Tiesą sakant, „for“ kilpa yra beveik universali, nes ją galima naudoti įvairiais būdais.

kilpai be antraštės dalių

Gali trūkti kiekvienos išraiškos for ciklo antraštėje.

Jei inicijavimas nereikalingas arba vyksta kitur, inicijavimo išraiška nereikalinga. Šiek tiek perrašykime ankstesnį pavyzdį:

Atkreipkite dėmesį, kad kabliataškis yra būtinas, nes jis reiškia trūkstamą išraišką. Sąlygos išraiškos nebuvimas prilygsta reikšmės TRUE įvedimui į sąlygą.

Tokiu atveju kilpa veiks be galo. Jei nėra didėjančios išraiškos, ji turi būti ciklo korpuse, kitaip ciklas bus vykdomas be galo.

Atminkite, kad bet kurią arba visas tris išraiškas galima praleisti, tačiau kabliataškius (;) reikia naudoti visada.

Keli posakiai for ciklo galvoje

Ciklo for antraštėje kiekviena išraiška, atskirta kabliataškiu, gali turėti keletą išraiškų, atskirtų kableliais. Todėl galima naudoti bet kokio sudėtingumo išraiškas.

"; } ?>

Jei vykdymo sąlygoje naudojamos kelios išraiškos, atskirtos kableliais, tada jos visos įvertinamos, tačiau rezultatas paimamas iš paskutinės.

Įdėtos kilpos

Kaip ir sąlyginiai teiginiai, kilpos gali būti įdėtos. Paprastas pavyzdys su vienu įdėjimo lygiu:

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

Labai dažnai rašant scenarijus tą patį veiksmą reikia atlikti kelis kartus. Tam ir skirti ciklai. Kilpos php, kaip ir kitomis kalbomis, skirstomi į keletą tipų:

  1. Kilpa su skaitikliu
  2. Kilpa su while, do-with sąlyga
  3. Kilpa, kad pereitumėte masyvus priekyje

Pavyzdžiui, kurdami internetinę parduotuvę, prieš rodydami prekes ekrane, turime pašalinti prekes, kurių atsargų likutis yra mažesnis nei 10. Norėdami tai padaryti, mes kilpa per masyvą su prekėmis ir naudojant sąlyginį operatorių, jei, patikriname prekių skaičių sandėlyje ir iš masyvo pašaliname visas prekes, kurių vertė sandėlyje mažesnė nei 10.

Ciklas PHP

Kilpa su skaitikliu– atlikta tam tikrą skaičių kartų. Pažiūrėkime į pavyzdį:

"; } ?>

Šiame pavyzdyje ciklas bus vykdomas 11 kartų. Nuo 0 (nes kintamasis $i = 0) iki 10 (nuo $i<= 10). Каждую итерацию $i будет увеличено на 1 ($i++). Чтобы было понятней, сделаем еще один пример:

"; } ?>

Kilpa veiks nuo 5 iki 9($i< 10 (в предыдущем примере было <= 10)).

Ciklas taip pat gali būti vykdomas atvirkštine tvarka:

5; $i--) ( aidas "Iteracijos numeris: $i
"; } ?>

Ciklas bus vykdomas nuo 10 iki 5.

Ciklas taip pat gali būti vykdomas tam tikru žingsniu, pažvelkime į pavyzdį:

"; } ?>

Ciklas atliks 3 iteracijas (0, 5, 10) su 5 žingsniu. Kiekviena iteracija ciklo skaitiklis bus padidintas 5.

foreach ciklas PHP

foreach kilpa- labiausiai paplitęs ciklas. Reikalingas beveik visuose scenarijuose, ypač jei PHP scenarijus veikia su duomenų bazėmis. Naudojamas masyvams pereiti.

Pavyzdžiui, pažvelkime į nedidelį pavyzdį:

$value) (pakartokite "Key: $key, Value: $value
"; } ?>

Kai paleisite scenarijų, pamatysite:

Raktas: 0, Reikšmė: raudonas Raktas: 1, Reikšmė: mėlynas Raktas: 2, Reikšmė: žalias Raktas: spalva, Reikšmė: geltonas Raktas: testas, Vertė: dizaino studija ox2.ru

Nors ciklas PHP

o kilpa naudojamas kilpai vykdyti tol, kol įvykdoma sąlyga. Jei sąlyga niekada nebus įvykdyta, kilpa pereis į kilpą.

Pažiūrėkime į pavyzdį:

"; } ?>

Ekrane pamatysime skaičius nuo 1 iki 19

„Do-while“ ciklas PHP:

Ciklas daryti, kol- veikia lygiai taip pat kaip o kilpa, vienintelis skirtumas yra tas, kad sąlyga tenkinama po iteracijos. Parašykime pavyzdį:

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

Ekrane matysime skaičius nuo 1 iki 20. Atkreipkite dėmesį, kad ankstesniame pavyzdyje su o kilpa buvo nuo 1 iki 19, nes sąlyga buvo įvykdyta prieš ciklo iteraciją.

Tam, kad nutraukti ciklą egzistuoja pertraukos funkcija, ji leidžia išeiti iš kilpos, nesvarbu, kiek pakartojimų liko iki ciklo pabaigos.

Norint praleisti iteraciją ir pereiti prie kitos iteracijos, yra tęsti funkciją.

Kuriant svetaines beveik visada naudojami ciklai, nepriklausomai nuo svetainės sukūrimo kainos, funkcionalumo ir kitų dalykų. Taigi priimkite juos rimtai!

Labai dažnai rašant scenarijus tą patį veiksmą reikia atlikti kelis kartus. Tam ir skirti ciklai. Ciklai PHP, kaip ir kitose kalbose, skirstomi į kelis tipus: Ciklas su skaitikliu, skirtas ciklo su laiku, do-whe sąlyga Ciklas, skirtas pereiti masyvus foreach

OX2 2014-10-02 2014-10-02

Dažnai patogu, kai atsiranda tam tikros sąlygos, anksti nutraukti kilpą. Pertraukos operatorius suteikia tokią galimybę. Jis veikia su tokiomis konstrukcijomis kaip: while, do while, for, foreach arba switch.

Pertraukos sakinys gali būti pasirenkamas skaitmeninis argumentas, nurodantis, kiek įdėtųjų struktūrų reikia nutraukti. Numatytoji skaitmeninio argumento reikšmė yra 1, kuri užbaigia dabartinę kilpą. Jei jungiklio sakinys naudojamas cikle, 1 pertrauka / pertrauka išeina tik iš jungiklio konstrukcijos.

\n"; 1 pertrauka; /* Išeina tik iš jungiklio konstrukcijos. */ 10 atvejis: echo "Iteracija 10; einam kur nors
\n"; break 2; /* Išeikite iš jungiklio konstrukcijos ir while ciklo. */ ) ) // kitas pavyzdys ($bar1 = -4; $bar1< 7; $bar1++) { // проверка деления на ноль if ($bar1 == 0) { echo "Выполнение остановлено: деление на ноль невозможно."; break; } echo "50/$bar1 = ",50/$bar1,"
"; } ?>

Žinoma, kartais norėtumėte tiesiog praleisti vieną iš ciklo iteracijų, o ne užbaigti ciklo, tokiu atveju tai daroma naudojant teiginį tęsti.

Tęsti

Norėdami sustabdyti esamo kodo bloko apdorojimą ciklo pagrinde ir pereiti prie kitos iteracijos, galite naudoti teiginį tęsti. Jis skiriasi nuo pertraukos operatoriaus tuo, kad nestabdo ciklo, o tiesiog pereina į kitą iteraciją.

Operatorius tęsti, kaip ir break, gali priimti pasirenkamą skaitinį argumentą, kuris nurodo, kiek įdėtųjų kilpų lygių bus praleista likusi iteracija. Numatytoji skaitinio argumento reikšmė yra 1, kuri praleidžia tik likusią dabartinės ciklo dalį.

"; tęsti; ) echo "50/$bar1 = ",50/$bar1,"
"; } ?>

Atkreipkite dėmesį, kad ciklui veikiant nulinė $skaitiklio kintamojo reikšmė buvo praleista, tačiau ciklas tęsėsi su kita reikšme.

eiti į

goto yra besąlyginis šuolio operatorius. Jis naudojamas norint pereiti į kitą programos kodo skyrių. Vieta, kur reikia eiti programoje, nurodoma etikete (paprastas identifikatorius), o po jos – dvitaškis. Norėdami tęsti, po goto teiginio dedama norima etiketė.

Paprastas goto teiginio naudojimo pavyzdys:

Goto teiginys turi tam tikrų jo naudojimo apribojimų. Tikslinė etiketė turi būti tame pačiame faile ir tame pačiame kontekste, o tai reiškia, kad negalite išeiti už funkcijos ar metodo ribų ir negalite peršokti į vieną iš jų. Taip pat negalite pereiti į jokį kilpos ar perjungimo teiginį. Tačiau jis gali būti naudojamas norint pabėgti nuo šių konstrukcijų (iš kilpų ir perjungimo teiginių). Paprastai goto sakinys naudojamas vietoj kelių lygių pertraukų teiginių.

"; ) echo "po kilpos - prieš ženklą"; // instrukcija nebus vykdoma end: echo "Po ženklo"; ?>

Kai kuriais atvejais kodą reikia vykdyti tol, kol bus pasiektas norimas rezultatas. Norėdami tai padaryti, PHP suteikia kilpas while, for ir foreach.

Nors ciklo sintaksė PHP

Sintaksė ciklaskol:

Pavyzdys, kaip PHP naudoti ciklą, kai:

Pirmiau pateiktame php while ciklo pavyzdyje skaitiklio kintamasis $i pirmiausia inicijuojamas į 0.

Nors ciklo sąlyga yra $i< 10 . Это означает, что мы проверяем, меньше ли переменная, чем 10.

Viskas, kas yra uždengta garbanotomis petnešomis, yra kilpos instrukcijos (kūnas). Jie kartojami tol, kol sąlyga yra teisinga. Aukščiau pateiktame pavyzdyje $i atspausdinamas ekrane, o tada skaitiklio kintamasis padidinamas 1. Tai svarbu, kad ciklo sąlyga ilgainiui nepavyktų. Jei ciklo sąlyga visada įvykdoma, pavyzdžiui, todėl, kad pamiršote padidinti skaitiklio kintamąjį $i , scenarijus pateks į begalinį ciklą. Laimei, PHP po kurio laiko nustos vykdyti jūsų scenarijų.

Galite padaryti tiek kilpos būseną, tiek kilpos korpusą tokius sudėtingus, kiek norite. Pavyzdžiui, naudokite while inside, o php, naudokite php, o kartoti per masyvą ( masyvas ) arba apibrėžkite daugiau nei vieną skaitiklio kintamąjį:

$min) ( echo "count1: $count1; count2: $count2
"; $ counter1 += 2; // Trumpoji išraiška $counter1 = $counter1 + 2; $counter2 -= 3; // Trumpoji išraiška $count2 = $count2-3; ) ?>

Pavyzdyje apibrėžiami du kintamieji: $ skaitiklis 1 ir $ skaitiklis 2 . Vienas kintamasis padidinamas 2, o kitas sumažinamas 3. Nors ciklas veikia tol, kol tenkinamos abi sąlygos $ count 1< $ max и $ count 2 >$min.

Pertraukos ir tęsimo raktinių žodžių poveikis cikle

Naudojant komandą pertrauka Gali nutraukti while ciklo vykdymą PHP. Tarkime, kad ieškome konkretaus vartotojo. Tada per trumpą laiką galite pereiti visus vartotojus. Jei rasime tinkamą vartotoją, ciklą sustabdysime naudodami raktinį žodį pertrauka.

Paprastas raktinio žodžio pertraukos naudojimo pavyzdys:

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

Šis kodas kartojasi skaičiais didėjančia tvarka nuo 0 iki $max = 30, pridėdamas prie $count kintamojo $increment reikšmę, kitaip tariant skaičių 2. Bet jei $count kintamasis yra lygus 10, atsitiks: išeinant iš while ciklo php.

Raktinis žodis tęsti nenutraukia ciklo php yra visiškai , bet tiesiog praleidžia likusį ciklo turinį. Toliau pateiktas pavyzdys parodo tai:

o ($ count< $max) { $counter += $increment; // увеличивает $payer на $increment if ($count >= 10 && $ skaičius<= 15) { echo "Число между 10 и 15
"; Tęsti; )

echo "$count
"; } ?>

Ši kilpa prasideda nuo 0 ir padidina skaitiklį iki $max. $skaitiklio kintamasis visada didinamas $increment kintamojo reikšme. Tai reiškia, kad reikia reikšmės 0, 2, 4 ir kt.

Jei $count kintamojo reikšmė yra nuo 10 iki 15, tekstas ir pareiškimas bus atspausdinti ekrane Tęsti praleis kitas išraiškas ciklo pagrinde. Dėl to matome, kad skaičiai 10, 12 ir 14 nėra išvesti.

„do-while“ ciklas PHP

Nedidelė modifikacija kol yra do - while ciklas. Šiuo atveju kilpos būklė tikrinama tik įvykdžius jos turinį. Tai reiškia, kad kilpos korpusas bus vykdomas bent vieną kartą.

Ciklo „Do-while“ sintaksė:

Tarkime, kad norime sugeneruoti atsitiktinį skaičių, kuris turi būti arba nuo 0 iki 10, arba tarp 20 ir 30. Pagal rand funkcijos apibrėžimą ( $ min, $ maks), galite atsitiktinai sugeneruoti skaičių tarp $min Ir Maks. $:

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

echo "Mūsų atsitiktinis skaičius: $atsitiktinis"; ?>

Naudojant php kilpą darytikol, galite gauti išraiškos reikšmę neįjungę $random kintamojo. Kilpos turinys vykdomas prieš išbandant sąlygą. Tada aukščiau pateiktas pavyzdys atrodytų taip:

10 && $ atsitiktinai< 20);

echo "Mūsų atsitiktinis skaičius: $atsitiktinis"; ?>

Pradedantiesiems „do-while“ ciklas gali būti šiek tiek painus. Jei visiškai nesuprantate jo paskirties, tai nėra problema. „Do-while“ kilpos praktiškai naudojamos retai.

Jei eilutėje, esančioje pavienėse kabutėse, pasvirasis brūkšnys „\“ yra prieš bet kurį kitą simbolį (išskyrus „\“ arba „“), tada jis laikomas įprastu simboliu ir išvedamas kaip ir visi kiti. Todėl pasvirasis brūkšnys pabėgimas reikalingas tik tuo atveju, jei jis yra eilutės pabaigoje, prieš baigiamąją kabutę.

PHP yra daugybė simbolių kombinacijų, kurios prasideda pasviruoju brūkšniu. Tai vadinamos pabėgimo sekomis ir turi specialias reikšmes, apie kurias pakalbėsime šiek tiek vėliau. Taigi, skirtingai nuo kitų dviejų sintaksių, specialiųjų simbolių kintamieji ir pabėgimo sekos, atsirandančios eilutėse, esančiose vienose kabutėse, nėra apdorojamos.

aidas „Taip pat galite įterpti į eilutes
naujos eilutės simbolis, taigi
nes tai normalu"
;
// Išvestis: norint išvesti ", jums reikia
// prieš jį įdėti \
aidas "Norėdami rodyti \", turite prieš ".
"padėk ją \\";
// Išėjimai: ar norite ištrinti C:\*.*?
aidas "Ar norite ištrinti C:\\*.*?";
// Išvestis: nebus įterpta: \n
// nauja linija
aidas "Tai neįterps:\nnauja eilutė";
// Išėjimai: $išplėsti kintamuosius taip pat
// $arba nepakeistas
aidas „$expand kintamieji taip pat yra $arba“.
"nepakeistas";
?>

16.1. Pavyzdys. Naudojant pabėgimo sekas

17. Dvigubos kabutės

Jei eilutė yra įtraukta į dvigubas kabutes "", PHP atpažįsta daugiau specialiųjų simbolių pabėgimo sekų.

Kai kurie iš jų pateikti lentelėje.
Lentelė. Valdymo sekos.

Kartojame, jei norite pabėgti nuo bet kurio kito simbolio, pasvirasis brūkšnys taip pat bus atspausdintas!

Svarbiausia dviejų kabučių eilučių savybė yra kintamasis valdymas.

Heredoc

Kitas būdas apibrėžti eilutes yra naudoti heredoc sintaksę. Tokiu atveju eilutė turi prasidėti simboliu<<<, после которого идет идентификатор. Заканчивается строка этим же идентификатором. Закрывающий идентификатор должен начинаться в первом столбце строки. Кроме того, идентификатор должен соответствовать тем же правилам именования, что и все остальные метки в PHP: содержать только буквенно-цифровые символы и знак подчеркивания и начинаться не с цифры или знака подчеркивания.

Heredoc tekstas elgiasi taip pat, kaip eilutė dvigubose kabutėse, jų neturint. Tai reiškia, kad nereikia naudoti pabėgimo kabučių heredoc, bet vis tiek galite naudoti aukščiau išvardytas pabėgimo sekas.

Taip pat apdorojami heredoc viduje esantys kintamieji.

$str =<<Eilutės, apimančios kelis, pavyzdys
naudojant linijas
heredoc sintaksė
EOD;
// Čia identifikatorius yra EOD. Žemiau
// EOT identifikatorius
$vardas = "Vasya" ;
aidas<<Mano vardas yra "$name".
EOT;
// tai išspausdins "Mano vardas yra "Vasya"."
?>

Pavyzdys. Naudojant heredoc sintaksę
Pastaba: Heredoc palaikymas buvo įtrauktas į PHP 4.

18. Įveskite masyvą

Masyvas PHP yra sutvarkytas žemėlapis - tipas, kuris konvertuoja reikšmes į raktus. Šis tipas yra optimizuotas keliais būdais, todėl galite naudoti jį kaip tikrąjį masyvą, sąrašą (vektorių), maišos lentelę (tai yra žemėlapio įgyvendinimas), krūvą, eilę ir kt. Kadangi kaip reikšmę galite turėti kitą PHP masyvą, galite
taip pat lengva imituoti medžius.

Masyvą galite apibrėžti naudodami konstrukciją array() arba tiesiogiai priskirdami reikšmes jo elementams. Apibrėžimas naudojant
array() masyvas ( => reikšmė,
=> reikšmė1, ...)

Masyvo() kalbos konstrukcija kaip parametrus laiko raktų => reikšmių poras, atskirtas kableliais. Simbolis => atitinka reikšmę su raktu. Raktas gali būti sveikas skaičius arba eilutė, o reikšmė gali būti bet kokio tipo PHP. Masyvo skaitinis raktas dažnai vadinamas indeksu. Masyvo indeksavimas PHP prasideda nuo nulio.

Masyvo elemento reikšmę galima gauti nurodant ieškomo elemento raktą po masyvo pavadinimo laužtiniuose skliaustuose. Jei masyvo raktas yra standartinis sveikasis skaičius, jis traktuojamas kaip skaičius;

Todėl $a["1"] rašymas prilygsta $a rašymui, kaip ir $a["-1"] $a[-1].

$knygos = array("php" =>
„PHP vartotojo vadovas“,
12 => tiesa );
echo $books [ "php" ];
//bus rodomas "PHP vartotojų vadovas"
aidas $knygos [12]; //išves 1
?>

18.1. Pavyzdys. Masyvai PHP

Jei elementui raktas nenurodytas, tada kaip raktas laikomas maksimalus skaitinis klavišas, padidintas vienu. Jei nurodysite raktą, kuriam jau buvo priskirta reikšmė, jis bus perrašytas. Nuo PHP 4.3.0, jei maksimalus raktas yra neigiamas skaičius, tada kitas masyvo raktas bus lygus nuliui (0).

// masyvai $arr ir $arr1 yra lygiaverčiai
$arr = masyvas(5 => 43 , 32 , 56 , "b" => 12 );
$arr1 = masyvas(5 => 43, 6 => 32,
7 => 56, "b" => 12);
?>

18.2. Pavyzdys. Masyvai PHP

Jei kaip raktą naudojate TRUE arba FALSE, tada jo reikšmė atitinkamai konvertuojama į sveikąjį skaičių vienetą ir nulį. Jei naudosime NULL, tada vietoj rakto gausime tuščią eilutę. Pačią tuščią eilutę taip pat galite naudoti kaip raktą, tačiau ji turi būti įdėta į kabutes. Taigi tai nėra tas pats, kas naudoti tuščius laužtinius skliaustus. Masyvai ir objektai negali būti naudojami kaip raktai.

Apibrėžimas naudojant laužtinių skliaustų sintaksę

Galite sukurti masyvą tiesiog įrašydami į jį reikšmes. Kaip jau minėjome, masyvo elemento reikšmę galima gauti naudojant laužtinius skliaustus, kurių viduje reikia nurodyti jo raktą, pavyzdžiui, $book["php"]. Jei nurodysite naują raktą ir naują reikšmę, pvz., $knyga["naujas_raktas"]="nauja_vertė", į masyvą bus įtrauktas naujas elementas. Jei rakto nenurodysime, o tik priskirsime reikšmę $book="new_value", tai naujasis masyvo elementas turės skaitinį raktą, kuris bus vienu didesniu už didžiausią esamą. Jei masyvo, prie kurio pridedame reikšmes, dar nėra, jis bus sukurtas.

$books [ "raktas" ]= reikšmė ; // įtraukta į masyvą
// $knygų vertė
// reikšmė su raktu
$knygos = vertė1 ; /* įtraukta į masyvą
reikšmė vertė1 s
13 raktas, nes
maksimalus raktas y
mūsų buvo 12 */
?>

Norint pakeisti konkretų masyvo elementą, tereikia jam ir jo raktui priskirti naują reikšmę. Negalite pakeisti elemento rakto, galite tik ištrinti elementą (rakto/reikšmių porą) ir pridėti naują. Norėdami pašalinti masyvo elementą, turite naudoti funkciją unset().

$knygos = array("php" =>
„PHP vartotojo vadovas“,
12 => tiesa );
$knygos =
"Knyga apie Perl" ; // pridėtas elementas
// su raktu (rodyklė)
// 13 yra lygiavertis
// $knygos =
// "Knyga apie Perl";
$knygos["lisp"] =
123456 ; /* Tai prideda naują prie masyvo