0%

🔀 Nosacījumi PHP

Nosacījumu konstrukcijas ļauj programmām pieņemt lēmumus – izpildīt dažādu kodu atkarībā no apstākļiem.

php

if / else / elseif

Teksts
<?php
$vecums = 20;

// Vienkāršs if
if ($vecums >= 18) {
    echo "Pilngadīgs<br>";
}

// if / else
if ($vecums >= 18) {
    echo "Pieaugušais<br>";
} else {
    echo "Nepilngadīgs<br>";
}

// if / elseif / else (vairāki nosacījumi)
$atzīme = 75;

if ($atzīme >= 90) {
    echo "Teicami (A)<br>";
} elseif ($atzīme >= 75) {
    echo "Labi (B)<br>";
} elseif ($atzīme >= 60) {
    echo "Viduvēji (C)<br>";
} elseif ($atzīme >= 45) {
    echo "Gandrīz (D)<br>";
} else {
    echo "Neizturēts (F)<br>";
}
// Izvada: Labi (B)

// Vienas rindas forma (bez iekavām) - NEIETEICAMS
if ($vecums >= 18) echo "Pilngadīgs<br>";

// Alternatīvā sintakse (noderīga HTML ielikšanai)
?>
<?php if ($vecums >= 18): ?>
    <p>Jūs esat pilngadīgs.</p>
<?php elseif ($vecums >= 16): ?>
    <p>Jūs esat gandrīz pilngadīgs.</p>
<?php else: ?>
    <p>Jūs vēl esat nepilngadīgs.</p>
<?php endif; ?>
<?php
?>

<?php
$vecums = 22;
$pilsonis = true;
$sodīts = false;

// Vairāki nosacījumi ar && (AND) un || (OR)
if ($vecums >= 18 && $pilsonis && !$sodīts) {
    echo "Drīkst balsot!<br>";
} else {
    echo "Nedrīkst balsot.<br>";
}

// Pārbaude, vai mainīgais ir noteiktā kopā
$statuss = "aktīvs";
if (in_array($statuss, ["aktīvs", "gaida", "pārskatīts"])) {
    echo "Derīgs statuss<br>";
}

// Nested (ligzdoti) if
$temperatūra = 25;
$lietus = false;

if ($temperatūra > 20) {
    if (!$lietus) {
        echo "Ideāls laiks pastaigai!<br>";
    } else {
        echo "Silts, bet lietus.<br>";
    }
} else {
    echo "Pārāk vēss.<br>";
}
?>

switch / case

Switch ir noderīgs, kad viens mainīgais tiek salīdzināts ar vairākām vērtībām.

Teksts
<?php
$diena = "Pirmd.";

switch ($diena) {
    case "Pirmd.":
        echo "Nedēļas sākums 😴<br>";
        break; // break nepieciešams, lai pārtrauktu izpildi

    case "Pirkt.":
        echo "Nedēļas beigas tuvojas! 🎉<br>";
        break;

    case "Sestd.":
    case "Svētd.":                   // Vairāki gadījumi vienam kodam
        echo "Brīvdiena! 🎈<br>";
        break;

    default:                         // Ja nekas neatbilst
        echo "Parastadiena.<br>";
}

// switch izmanto "vaļīgo" salīdzinājumu (==), nevis ===
// Tāpēc PHP 8+ ieteicams izmantot match

// switch ar integers
$mēnesis = 3;
switch ($mēnesis) {
    case 1: case 2: case 3:
        echo "Pavasaris<br>"; break;
    case 4: case 5: case 6:
        echo "Vasara<br>"; break;
    case 7: case 8: case 9:
        echo "Rudens<br>"; break;
    default:
        echo "Ziema<br>";
}
?>

match izteiksme (PHP 8+)

match ir modernāks switch alternatīva ar stingro salīdzinājumu (===) un kā izteiksme (var atgriezt vērtību).

✅ Ieteikums

Izmanto match PHP 8+ projektiem – tas ir drošāks un kompaktāks nekā switch. switch izmanto tikai, ja vajadzīgs saderīgums ar vecāku PHP vai sarežģītu loģiku.

Teksts
<?php
$statuss = 2;

// match atgriež vērtību
$teksts = match($statuss) {
    0 => "Neaktīvs",
    1 => "Aktīvs",
    2 => "Gaida",
    3, 4 => "Pārskata", // Vairākas vērtības
    default => "Nezināms"
};

echo $teksts . "<br>"; // Gaida

// match ar nosacījumiem (PHP 8.1+)
$vecums = 25;
$kategorija = match(true) {
    $vecums < 13  => "Bērns",
    $vecums < 18  => "Pusaudzis",
    $vecums < 65  => "Pieaugušais",
    default       => "Seniors"
};
echo $kategorija . "<br>"; // Pieaugušais

// Atšķirības no switch:
// 1. match izmanto === (stingro salīdzināšanu)
// 2. match ir izteiksme (atgriež vērtību)
// 3. match nav nepieciešams break
// 4. match kļūdas gadījumā met UnhandledMatchError
//    (switch ar default bez vērtības atgriež null)

$skaitlis = "1"; // String!
// switch - atradīs case 1 (vaļīgs salīdzinājums)
// match - kļūda! Nav case "1" (stingrs salīdzinājums)
?>

Ternārais operators un īsā forma

🎓 Ko mācīties tālāk?

Nākamajā sadaļā uzzināsiet par cilpām PHP – kā atkārtoti izpildīt kodu.

Teksts
<?php
$vecums = 20;

// Ternārais operators
$statuss = $vecums >= 18 ? "Pieaugušais" : "Nepilngadīgs";
echo $statuss . "<br>"; // Pieaugušais

// Null coalescing (??)
$lietotājs = $_GET["vards"] ?? "Anonīms";
echo "Sveicināts, $lietotājs!<br>";

// Ķēdēts null coalescing
$a = null;
$b = null;
$c = "Vērtība";
echo $a ?? $b ?? $c . "<br>"; // Vērtība

// Piešķiršana ar null coalescing (??=)
$opcija = null;
$opcija ??= "Noklusējums";
echo $opcija . "<br>"; // Noklusējums

// Praktisks piemērs - formu apstrāde
$vards = isset($_POST["vards"]) ? htmlspecialchars($_POST["vards"]) : "";
// Vai modernāk:
$vards = htmlspecialchars($_POST["vards"] ?? "");
echo "Vārds: $vards<br>";
?>