🔁 Cikli PHP
Cikli ļauj atkārtoti izpildīt kodu. PHP piedāvā četrus ciklu veidus: for, while, do-while un foreach.
for cilpa
Izmanto, kad zini, cik reizes cilpa tiks izpildīta.
<?php
// Pamata for cilpa
// for (sākums; nosacījums; solis)
for ($i = 1; $i <= 5; $i++) {
echo "Skaitlis: $i<br>";
}
// 1, 2, 3, 4, 5
// Skaitīšana atpakaļ
for ($i = 10; $i >= 1; $i--) {
echo "$i... ";
}
echo "Start!<br>";
// Par 2
for ($i = 0; $i <= 20; $i += 2) {
echo "$i ";
}
echo "<br>"; // 0 2 4 6 8 10 12 14 16 18 20
// Reizināšanas tabula
echo "<table border='1'>";
for ($i = 1; $i <= 5; $i++) {
echo "<tr>";
for ($j = 1; $j <= 5; $j++) {
echo "<td>" . ($i * $j) . "</td>";
}
echo "</tr>";
}
echo "</table>";
?>
while cilpa
Izmanto, kad nezini iepriekš, cik reizes cilpa tiks izpildīta – turpina, kamēr nosacījums ir patiess.
<?php
// Pamata while
$skaits = 1;
while ($skaits <= 5) {
echo "Skaits: $skaits<br>";
$skaits++;
}
// Ciparu summa līdz 100
$summa = 0;
$n = 1;
while ($summa + $n <= 100) {
$summa += $n;
$n++;
}
echo "Summa: $summa, pēdējais skaitlis: " . ($n - 1) . "<br>";
// Bieži while izmanto ar datubāzēm
// $stmt = $pdo->query("SELECT * FROM raksti");
// while ($rinda = $stmt->fetch()) {
// echo $rinda["virsraksts"] . "<br>";
// }
// Bīstāga situācija - bezgalīga cilpa (IZVAIRĪTIES!)
// $i = 0;
// while (true) {
// echo $i++;
// // Jābūt break nosacījumam, citādi cilpa neapstājas!
// if ($i > 1000) break;
// }
?>
do-while cilpa
Atšķirībā no while, do-while cilpa tiek izpildīta vismaz vienu reizi, jo nosacījums tiek pārbaudīts pēc izpildes.
<?php
$skaits = 1;
do {
echo "Skaits: $skaits<br>";
$skaits++;
} while ($skaits <= 5);
// Atšķirība no while:
$i = 10;
// while - netiek izpildīts (10 > 5 ir false?)
while ($i < 5) {
echo "while: $i<br>"; // Netiek izvadīts
$i++;
}
// do-while - izpildās VIENU reizi, pat ja nosacījums aplams
do {
echo "Vismaz vienu reizi!<br>"; // Tiek izvadīts!
$i++;
} while ($i < 5);
// Praktisks piemērs - lietotāja ievades validācija simulācija
$mēginājumi = 0;
$pareizaAtbilde = 42;
$atbilde = 0;
do {
$mēginājumi++;
// Simulējam - reālā lapā šī būtu formas ievade
$atbilde = ($mēginājumi == 3) ? 42 : rand(1, 100);
echo "Mēginājums $mēginājumi: $atbilde<br>";
} while ($atbilde !== $pareizaAtbilde && $mēginājumi < 5);
if ($atbilde === $pareizaAtbilde) {
echo "Pareizi! ($mēginājumi mēginājumi)<br>";
}
?>
foreach cilpa
foreach ir īpaši paredzēts masīvu apstrādei. Tas ir visvieglāk lietojamais cilpu veids PHP.
<?php
// Vienkāršs masīvs
$augļi = ["ābols", "bumbieris", "ķirsis", "plūme"];
foreach ($augļi as $auglis) {
echo "Auglis: $auglis<br>";
}
// Ar indeksu
foreach ($augļi as $index => $auglis) {
echo "$index: $auglis<br>";
}
// 0: ābols
// 1: bumbieris
// ...
// Asociatīvs masīvs
$persona = [
"vārds" => "Marta",
"uzvārds" => "Bērziņa",
"vecums" => 28,
"pilsēta" => "Rīga"
];
foreach ($persona as $atslēga => $vērtība) {
echo "$atslēga: $vērtība<br>";
}
// Masīvs ar objektiem / daudzlīmeņu
$studenti = [
["vārds" => "Jānis", "atzīme" => 85],
["vārds" => "Marta", "atzīme" => 92],
["vārds" => "Pēteris","atzīme" => 76],
];
foreach ($studenti as $students) {
echo "{$students["vārds"]}: {$students["atzīme"]} punkti<br>";
}
// Mainoties masīva elementam ar & (atsauce)
$skaitļi = [1, 2, 3, 4, 5];
foreach ($skaitļi as &$sk) { // & = atsauce uz oriģinālo elementu
$sk *= 2;
}
unset($sk); // SVARĪGI: dzēst atsauci pēc cikla!
print_r($skaitļi); // [2, 4, 6, 8, 10]
?>
break un continue
🎓 Ko mācīties tālāk?
Nākamajā sadaļā iepazīstieties ar masīviem – vienu no spēcīgākajiem PHP datu tipiem.
<?php
// break - pārtrauc cilpu
for ($i = 1; $i <= 10; $i++) {
if ($i === 5) {
echo "Apstājos pie 5!<br>";
break; // Iziet no cikla
}
echo "$i ";
}
echo "<br>"; // 1 2 3 4 Apstājos pie 5!
// continue - izlaiž pārējo iterāciju
for ($i = 1; $i <= 10; $i++) {
if ($i % 2 === 0) {
continue; // Izlaiž pāra skaitļus
}
echo "$i "; // 1 3 5 7 9
}
echo "<br>";
// break ar līmeni (izkļūšana no ligzdotām cilpām)
for ($i = 1; $i <= 3; $i++) {
for ($j = 1; $j <= 3; $j++) {
if ($j === 2) {
break 2; // Vai break 1 - pārtrauc arī ārējo cilpu
}
echo "($i,$j) "; // Tikai (1,1)
}
}
echo "<br>";
// Praktisks piemērs - meklēšana masīvā
$vārdi = ["ābols", "bumbieris", "ķirsis", "plūme", "aprikoze"];
$meklētais = "ķirsis";
$atrasts = false;
foreach ($vārdi as $index => $vārds) {
if ($vārds === $meklētais) {
echo "Atrasts '$meklētais' pozīcijā: $index<br>";
$atrasts = true;
break; // Nav jāturpina meklēšana
}
}
if (!$atrasts) {
echo "'$meklētais' nav atrasts<br>";
}
?>