PHP / Массивын функцүүд

Массивын функцүүд

PHP нь массивтай ажиллах 70 гаруй бэлэн функцтэй. Давталт бичихгүйгээр шүүх, эрэмбэлэх, хөрвүүлэх, хайх бүгдийг нэг дуудалтаар хийж болно. Эдгээрийг сайн мэдэх нь кодыг богино, тод, хурдан болгодог.

Эрэмбэлэх функцүүд

php
<?php
$тоонууд = [3, 1, 4, 1, 5, 9, 2, 6, 5];
$нэрнүүд = ["Дорж", "Анар", "Батбаяр", "Цэцэг"];

// Дээш эрэмбэлэх — индексийг дахин тогтооно
sort($тоонууд);
print_r($тоонууд);   // 1, 1, 2, 3, 4, 5, 5, 6, 9

// Доош эрэмбэлэх
rsort($тоонууд);
print_r($тоонууд);   // 9, 6, 5, 5, 4, 3, 2, 1, 1

// Холбоот массив — түлхүүрийг хадгалж эрэмбэлэх
$оноонууд = ["Дорж" => 88, "Анар" => 95, "Батбаяр" => 72];
arsort($оноонууд);   // Утгаар буурах — түлхүүр хадгалагдана
print_r($оноонууд);  // Анар:95, Дорж:88, Батбаяр:72

// Түлхүүрээр эрэмбэлэх
ksort($оноонууд);    // Анар, Батбаяр, Дорж (цагаан толгойгоор)

// Дурын дүрмээр эрэмбэлэх
$хүмүүс = [
    ["нэр" => "Дорж",    "нас" => 31],
    ["нэр" => "Анар",    "нас" => 25],
    ["нэр" => "Батбаяр", "нас" => 28],
];

usort($хүмүүс, fn($a, $b) => $a["нас"] <=> $b["нас"]);
// Наснаас нь дэсэн эрэмбэлнэ: Анар(25), Батбаяр(28), Дорж(31)
?>

Шүүх ба хайх

php
<?php
$тоонууд = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// array_filter — нөхцөлийг хангасан элементийг л үлдээнэ
$тэгш = array_filter($тоонууд, fn($n) => $n % 2 === 0);
print_r($тэгш);   // 2, 4, 6, 8, 10

// Нөхцөлгүй тохиолдолд falsy утгуудыг хасна
$холимог = [0, "PHP", "", false, 42, null, "Laravel"];
$цэвэр = array_filter($холимог);
// "PHP", 42, "Laravel" үлдэнэ

// in_array — элемент байгаа эсэхийг шалгана
$хэлнүүд = ["PHP", "Go", "Python", "JavaScript"];
echo in_array("Go", $хэлнүүд) ? "байна" : "байхгүй";   // байна
echo in_array("Rust", $хэлнүүд, true) ? "байна" : "байхгүй"; // байхгүй

// array_search — байршлыг буцаана
$байршил = array_search("Python", $хэлнүүд);
echo $байршил;   // 2

// array_unique — давхардлыг хасна
$давхардсан = ["PHP", "Go", "PHP", "Python", "Go", "PHP"];
$өвөрмөц = array_unique($давхардсан);
// PHP, Go, Python
?>

Хөрвүүлэх функцүүд

php
<?php
$тоонууд = [1, 2, 3, 4, 5];

// array_map — элемент бүрт функц хэрэглэнэ, шинэ массив буцаана
$квадратууд = array_map(fn($n) => $n ** 2, $тоонууд);
print_r($квадратууд);   // 1, 4, 9, 16, 25

// Олон массивт нэгэн зэрэг хэрэглэх
$а = [1, 2, 3];
$б = [10, 20, 30];
$нийлбэрүүд = array_map(fn($x, $y) => $x + $y, $а, $б);
// 11, 22, 33

// array_reduce — массивыг нэг утга болгон буулгана
$нийт = array_reduce($тоонууд, fn($нийт, $n) => $нийт + $n, 0);
echo $нийт;   // 15

// Бүтээгдэхүүний нийт үнэ
$сагс = [
    ["нэр" => "PHP ном",    "үнэ" => 25000, "тоо" => 1],
    ["нэр" => "Laravel курс", "үнэ" => 79000, "тоо" => 2],
    ["нэр" => "MySQL ном",  "үнэ" => 18000, "тоо" => 3],
];

$нийт_үнэ = array_reduce($сагс, fn($нийт, $зүйл) =>
    $нийт + $зүйл["үнэ"] * $зүйл["тоо"], 0
);
echo number_format($нийт_үнэ) . " ₮";   // 237,000 ₮
?>

Хуваах ба нэгтгэх

php
<?php
$тоонууд = [1, 2, 3, 4, 5, 6, 7, 8];

// array_slice — хэсгийг авна (эх массив өөрчлөгдөхгүй)
$хэсэг = array_slice($тоонууд, 2, 4);   // 3, 4, 5, 6
$сүүлийн3 = array_slice($тоонууд, -3);  // 6, 7, 8

// array_splice — хасаж/оруулна (эх массив өөрчлөгдөнө)
$жагсаалт = ["А", "Б", "В", "Г", "Д"];
$хасагдсан = array_splice($жагсаалт, 1, 2, ["X", "Y", "Z"]);
// $жагсаалт: А, X, Y, Z, Г, Д
// $хасагдсан: Б, В

// array_merge — нэгтгэнэ
$эхний = ["PHP", "MySQL"];
$хоёрдугаар = ["Laravel", "Composer"];
$нэгтгэсэн = array_merge($эхний, $хоёрдугаар);
// PHP, MySQL, Laravel, Composer

// array_chunk — тэнцүү хэсгүүдэд хуваана
$бүлгүүд = array_chunk([1,2,3,4,5,6,7], 3);
// [[1,2,3], [4,5,6], [7]]

// array_combine — түлхүүр ба утгыг нэгтгэнэ
$түлхүүрүүд = ["нэр", "нас", "хот"];
$утгууд     = ["Болд", 27, "Эрдэнэт"];
$хүн = array_combine($түлхүүрүүд, $утгууд);
// ["нэр" => "Болд", "нас" => 27, "хот" => "Эрдэнэт"]
?>

Практик жишээ — бүтээгдэхүүний каталог шүүлт

php
<?php
$бүтээгдэхүүнүүд = [
    ["нэр" => "PHP ном",       "үнэ" => 25000, "төрөл" => "ном"],
    ["нэр" => "Laravel курс",  "үнэ" => 79000, "төрөл" => "курс"],
    ["нэр" => "Go ном",        "үнэ" => 32000, "төрөл" => "ном"],
    ["нэр" => "MySQL курс",    "үнэ" => 59000, "төрөл" => "курс"],
    ["нэр" => "JavaScript ном","үнэ" => 21000, "төрөл" => "ном"],
];

// Зөвхөн номуудыг шүүж, үнээр эрэмбэлэх
$номууд = array_filter(
    $бүтээгдэхүүнүүд,
    fn($б) => $б["төрөл"] === "ном"
);

usort($номууд, fn($a, $b) => $a["үнэ"] <=> $b["үнэ"]);

// Нэр ба үнэ л харуулах
$харуулах = array_map(
    fn($б) => "{$б['нэр']}: " . number_format($б["үнэ"]) . " ₮",
    $номууд
);

echo implode("\n", $харуулах);
// JavaScript ном: 21,000 ₮
// PHP ном: 25,000 ₮
// Go ном: 32,000 ₮
?>

Дараагийн хичээлд:

PHP-ийн superglobal хувьсагчдыг судална — $_GET, $_POST, $_SERVER, $_SESSION, $_COOKIE гэх мэт PHP-н ямар ч газраас хандаж болох тусгай хувьсагчдыг ба тэдгээрийг вэб хуудсанд хэрхэн аюулгүй ашиглахыг үзнэ.