if/else нөхцөл
Программ ямагт дараалсан мөр мөрөөр биш, нөхцлөөс хамаарч өөр өөр замаар явдаг. "Хэрэглэгч нэвтэрсэн бол профайл харуул, эс бол нэвтрэх хуудас руу шилжүүл" гэх мэт. PHP-д энэ шийдвэр гаргах ажлыг if, elseif, else бүтцүүд гүйцэтгэдэг.
if үндсэн бүтэц
if блок нь нөхцөл true байвал гүйцэтгэгдэнэ:
<?php
$температур = -5;
if ($температур < 0) {
echo "Хүйтэн өдөр байна.";
}
// Нэг мөрт бол хаалт орхиж болно (гэхдээ зөвлөдөггүй)
if ($температур < 0) echo "Хүйтэн!";
// Нөхцөл дурын илэрхийлэл байж болно
$нэр = "Дорж";
if (strlen($нэр) > 3) {
echo "Нэр 3-с олон тэмдэгттэй.";
}
?>
if / else
Нөхцөл биелэхгүй үед ажиллах кодыг else блокт бичнэ:
<?php
$нас = 16;
if ($нас >= 18) {
echo "Насанд хүрсэн.";
} else {
echo "Насанд хүрээгүй.";
}
// Насанд хүрээгүй.
// Нэвтрэх шалгалтын жишээ
$нэвтэрсэн = false;
if ($нэвтэрсэн) {
echo "Тавтай морил!";
} else {
echo "Нэвтрэнэ үү.";
// header("Location: /login");
}
?>
if / elseif / else
Гурав ба түүнээс олон тохиолдлыг elseif -ээр задална:
<?php
$оноо = 75;
if ($оноо >= 90) {
echo "Дүн: A — Маш сайн";
} elseif ($оноо >= 80) {
echo "Дүн: B — Сайн";
} elseif ($оноо >= 70) {
echo "Дүн: C — Дунд";
} elseif ($оноо >= 60) {
echo "Дүн: D — Хангалттай";
} else {
echo "Дүн: F — Хангалтгүй";
}
// Дүн: C — Дунд
?>
PHP нь нөхцлүүдийг дээрээс доош нэг нэгээр шалгаж, эхний true болсон блокт зогсдог — тиймээс дарааллыг зөв тавих нь чухал.
Нөхцлийг нэгтгэх
&& (ба), || (эсвэл), ! (биш) ашиглан нарийн нөхцөл бичнэ:
<?php
$нас = 22;
$нэвтэрсэн = true;
$admin = false;
// Хоёр нөхцөл хоёулаа биелэх ёстой
if ($нэвтэрсэн && $нас >= 18) {
echo "Хуудсыг үзэх боломжтой.";
}
// Нэг нь л биелэхэд хангалттай
if ($admin || $нас >= 21) {
echo "Нэмэлт эрх байна.";
}
// Нөхцлийг үгүйсгэх
if (!$admin) {
echo "Та admin биш.";
}
// Нарийн нөхцөл
$цалин = 1200000;
$туршлага = 3;
if ($цалин >= 1000000 && $туршлага >= 2 && !$admin) {
echo "Нэр дэвших боломжтой.";
}
?>
Ternary оператор
Богино нөхцлийг нэг мөрт бичих хэлбэр:
<?php
$нас = 20;
// Энгийн хэлбэр: нөхцөл ? үнэн : худал
$статус = ($нас >= 18) ? "насанд хүрсэн" : "насанд хүрээгүй";
echo $статус; // насанд хүрсэн
// Практик жишээ — хэрэглэгчийн нэрийг харуулах
$хэрэглэгч = "";
$харуулах_нэр = !empty($хэрэглэгч) ? $хэрэглэгч : "Зочин";
echo $харуулах_нэр; // Зочин
// Null coalescing оператор (??) — PHP 7+
$_GET['хэл'] = null;
$хэл = $_GET['хэл'] ?? "mn"; // null бол "mn" ашиглана
echo $хэл; // mn
?>
Match илэрхийлэл (PHP 8+)
switch-ийн орчин үеийн хувилбар — strict comparison, утга буцаадаг:
<?php
$статус_код = 404;
$мессеж = match($статус_код) {
200 => "OK — Амжилттай",
301, 302 => "Redirect — Шилжсэн",
404 => "Not Found — Олдсонгүй",
500 => "Server Error — Серверийн алдаа",
default => "Тодорхойгүй алдаа",
};
echo $мессеж; // Not Found — Олдсонгүй
?>
Практик жишээ — нэвтрэлтийн шалгалт
<?php
function нэвтрэлт_шалгах(string $имэйл, string $нууц_үг): string {
// Хоосон эсэхийг шалгана
if (empty($имэйл) || empty($нууц_үг)) {
return "Имэйл ба нууц үгийг оруулна уу.";
}
// Имэйл формат шалгана
if (!filter_var($имэйл, FILTER_VALIDATE_EMAIL)) {
return "Имэйлийн формат буруу байна.";
}
// Нууц үгийн урт шалгана
if (strlen($нууц_үг) < 8) {
return "Нууц үг хамгийн багадаа 8 тэмдэгт байх ёстой.";
}
return "Шалгалт амжилттай.";
}
echo нэвтрэлт_шалгах("", "abc");
// Имэйл ба нууц үгийг оруулна уу.
echo нэвтрэлт_шалгах("буруу@", "password123");
// Имэйлийн формат буруу байна.
echo нэвтрэлт_шалгах("user@example.com", "mypass1");
// Нууц үг хамгийн багадаа 8 тэмдэгт байх ёстой.
echo нэвтрэлт_шалгах("user@example.com", "mypassword");
// Шалгалт амжилттай.
?>
Дараагийн хичээлд:
switch хуваарилагчийг судална — олон тохиолдлыг цэвэрхэн бичих арга, case, break, default хэрхэн ажилладаг, match илэрхийлэлтэй хэрхэн харьцуулагддагийг үзнэ.