PHP / Тоон үйлдлүүд
Тоон үйлдлүүд
Вэб хөгжүүлэлтэд тоо байнга хэрэглэгддэг — үнэ тооцоолох, оноо нэмэх, статистик харуулах, санамсаргүй тоо үүсгэх гэх мэт. PHP нь Math модульд олон бэлэн функцтэй. Энэ хичээлд тэдгээрийг практик жишээнүүдээр судална.
Тоон төрлүүд ба хязгаар
PHP-д тоог хоёр үндсэн төрлөөр хадгалдаг: integer ба float. Тус бүрийн хязгаарыг мэдэх нь чухал:
php
<?php
// Integer хязгаар
echo PHP_INT_MAX; // 9223372036854775807
echo PHP_INT_MIN; // -9223372036854775808
echo PHP_INT_SIZE; // 8 (байт)
// Float хязгаар
echo PHP_FLOAT_MAX; // 1.7976931348623E+308
echo PHP_FLOAT_MIN; // 2.2250738585072E-308
echo PHP_FLOAT_EPSILON; // 2.2204460492503E-16 (хамгийн жижиг ялгаа)
// Тоон шалгалт
var_dump(is_int(42)); // bool(true)
var_dump(is_float(3.14)); // bool(true)
var_dump(is_numeric("42")); // bool(true) — мөр ч тоо мөн үү?
var_dump(is_numeric("42px")); // bool(false)
?>
Дугуйлах функцүүд
php
<?php
$тоо = 4.67;
echo round($тоо); // 5 — ойрын бүхэл тоо руу дугуйлна
echo round($тоо, 1); // 4.7 — 1 аравтын орон
echo round(4.5); // 5
echo round(4.4); // 4
echo round(-4.5); // -5
echo ceil($тоо); // 5 — дээш дугуйлна (ceiling)
echo ceil(4.1); // 5
echo floor($тоо); // 4 — доош дугуйлна (floor)
echo floor(4.9); // 4
// Бодит жишээ: үнэ дугуйлах
$нийт = 9999 * 1.1; // 10998.9
echo round($нийт, -2); // 11000 (зуугийн нарийвчлалаар)
?>
Математикийн үндсэн функцүүд
php
<?php
// Үнэмлэхүй утга
echo abs(-42); // 42
echo abs(42); // 42
// Зэрэг ба язгуур
echo pow(2, 10); // 1024
echo sqrt(144); // 12
echo sqrt(2); // 1.4142135623731
// Логарифм
echo log(M_E); // 1 (натурал логарифм)
echo log(100, 10); // 2 (аравтын логарифм)
echo log10(1000); // 3
// Хамгийн их/бага
echo max(3, 7, 2, 9, 1); // 9
echo min(3, 7, 2, 9, 1); // 1
echo max([5, 3, 8, 1]); // 8 (массивт ч ажиллана)
// Нийлбэр
$тоонууд = [10, 20, 30, 40];
echo array_sum($тоонууд); // 100
?>
Санамсаргүй тоо үүсгэх
php
<?php
// rand() — хурдан боловч урьдчилан таамаглагдаж болно
echo rand(); // 0-с PHP_INT_MAX хүртэл
echo rand(1, 100); // 1–100 хооронд
// random_int() — аюулгүй, cryptography-д тохиромжтой (PHP 7+)
echo random_int(1, 6); // шоо шидэх (1–6)
echo random_int(100000, 999999); // 6 оронтой код
// Жишээ: 4 оронтой OTP код үүсгэх
$otp = str_pad(random_int(0, 9999), 4, "0", STR_PAD_LEFT);
echo $otp; // 0742 (жишээ)
// Массивыг холих
$карт = ["А", "К", "Д", "Х", "10"];
shuffle($карт);
echo implode(", ", $карт); // санамсаргүй дараалал
?>
Тооцоолол ба форматлах
php
<?php
// Тригонометр (радианаар)
echo sin(M_PI / 2); // 1
echo cos(0); // 1
echo tan(M_PI / 4); // 1
// Тогтмолууд
echo M_PI; // 3.1415926535898
echo M_E; // 2.718281828459
echo M_SQRT2; // 1.4142135623731
// Тоог форматлах
$их_тоо = 1234567.891;
echo number_format($их_тоо); // 1,234,568
echo number_format($их_тоо, 2); // 1,234,567.89
echo number_format($их_тоо, 2, ".", " "); // 1 234 567.89
// Тооны систем хооронд хөрвүүлэх
echo decbin(255); // 11111111 (10 → 2)
echo decoct(255); // 377 (10 → 8)
echo dechex(255); // ff (10 → 16)
echo bindec("1010"); // 10 (2 → 10)
echo hexdec("ff"); // 255 (16 → 10)
?>
Практик жишээ — хүүгийн тооцоолол
php
<?php
function зээлийн_төлбөр(float $үндсэн, float $хүү_хувь, int $сар): float {
// Сарын хүү
$сарын_хүү = $хүү_хувь / 100 / 12;
if ($сарын_хүү === 0.0) {
return $үндсэн / $сар;
}
// Аннуитет томьёо
$төлбөр = $үндсэн * ($сарын_хүү * pow(1 + $сарын_хүү, $сар))
/ (pow(1 + $сарын_хүү, $сар) - 1);
return round($төлбөр, 2);
}
$зээл = 10_000_000; // 10 сая төгрөг
$хүү = 18; // жилийн 18%
$хугацаа = 24; // 24 сар
$сарын = зээлийн_төлбөр($зээл, $хүү, $хугацаа);
echo number_format($сарын, 0, ".", ",") . " ₮/сар";
// 499,243 ₮/сар
?>
Дараагийн хичээлд:
Нөхцөлт салаалалт — if, elseif, else хэрхэн ажилладаг, нөхцөл хэрхэн зөв бичих, нэг мөрт (ternary) нөхцөл гэх мэт PHP-ийн шийдвэр гаргах бүтцүүдийг судална.