PHP / Холбоот массив
Холбоот массив
Жагсаалт массив тоон индекс ашигладаг бол холбоот массив (associative array) нь мөр түлхүүр ашигладаг. $хүн[0] гэхийн оронд $хүн["нэр"] гэж бичнэ — утга нь илүү тодорхой, унших нь хялбар. Вэб хөгжүүлэлтэд хэрэглэгчийн мэдээлэл, тохиргоо, API хариулт зэргийг энэ хэлбэрт хадгалдаг.
Холбоот массив үүсгэх
php
<?php
// Үндсэн хэлбэр
$хүн = [
"нэр" => "Батбаяр",
"нас" => 28,
"хот" => "Улаанбаатар",
"мэргэжил" => "Backend хөгжүүлэгч",
"premium" => true,
];
// Элементэд хандах
echo $хүн["нэр"]; // Батбаяр
echo $хүн["нас"]; // 28
// Шинэ талбар нэмэх
$хүн["имэйл"] = "bat@example.mn";
$хүн["xp"] = 1250;
// Утга өөрчлөх
$хүн["нас"] = 29;
// Байгаа эсэхийг шалгах
if (isset($хүн["имэйл"])) {
echo "Имэйл байна: " . $хүн["имэйл"];
}
// Байхгүй түлхүүрт хандах аюулгүй арга
$утас = $хүн["утас"] ?? "тодорхойгүй";
echo $утас; // тодорхойгүй
?>
foreach давталт
Холбоот массивыг давтахад $түлхүүр => $утга хэлбэрийг ашиглана:
php
<?php
$тохиргоо = [
"db_host" => "localhost",
"db_name" => "myapp",
"db_port" => 3306,
"debug" => false,
"timezone" => "Asia/Ulaanbaatar",
"max_upload" => "10MB",
];
// Түлхүүр ба утга хоёуланг харуулах
foreach ($тохиргоо as $түлхүүр => $утга) {
$харуулах = is_bool($утга)
? ($утга ? "true" : "false")
: $утга;
echo "$түлхүүр = $харуулах\n";
}
// Зөвхөн утгуудыг давтах
foreach ($тохиргоо as $утга) {
echo $утга . "\n";
}
// Зөвхөн түлхүүрүүдийг авах
$түлхүүрүүд = array_keys($тохиргоо);
echo implode(", ", $түлхүүрүүд);
// db_host, db_name, db_port, debug, timezone, max_upload
?>
Холбоот массивын массив
Бодит амьдрал дахь өгөгдөл ихэвчлэн олон давхаргатай байдаг:
php
<?php
$бүтээгдэхүүнүүд = [
[
"id" => 1,
"нэр" => "PHP сурах гарын авлага",
"үнэ" => 25000,
"төрөл" => "ном",
],
[
"id" => 2,
"нэр" => "Laravel курс",
"үнэ" => 79000,
"төрөл" => "курс",
],
[
"id" => 3,
"нэр" => "MySQL сурах бичиг",
"үнэ" => 18000,
"төрөл" => "ном",
],
];
// Бүтээгдэхүүн бүрийг харуулах
foreach ($бүтээгдэхүүнүүд as $бүт) {
echo "{$бүт['нэр']} — " . number_format($бүт['үнэ']) . " ₮\n";
}
// Тодорхой бүтээгдэхүүн хайх
foreach ($бүтээгдэхүүнүүд as $бүт) {
if ($бүт["id"] === 2) {
echo "Олдлоо: " . $бүт["нэр"];
break;
}
}
// Нийт үнэ тооцоолох
$нийт = array_sum(array_column($бүтээгдэхүүнүүд, "үнэ"));
echo number_format($нийт) . " ₮"; // 122,000 ₮
?>
Массив нэгтгэх ба шинэчлэх
php
<?php
$анхны = [
"нэр" => "Дорж",
"нас" => 25,
"хот" => "Дархан",
];
$шинэчлэл = [
"хот" => "Улаанбаатар", // Давхардсан — шинэ утгаар дарна
"имэйл" => "dorj@mail.mn", // Шинэ талбар нэмнэ
];
// array_merge — хоёр массивыг нэгтгэнэ
$нэгтгэсэн = array_merge($анхны, $шинэчлэл);
print_r($нэгтгэсэн);
// нэр: Дорж, нас: 25, хот: Улаанбаатар, имэйл: dorj@mail.mn
// Spread оператор ашиглан нэгтгэх (PHP 8.1+)
$бүрэн = [...$анхны, ...$шинэчлэл];
// array_diff_key — зөвхөн зарим талбарыг хасах
$нийтэд_харуулах = array_diff_key($нэгтгэсэн, ["имэйл" => ""]);
print_r($нийтэд_харуулах);
// нэр, нас, хот л үлдэнэ
?>
Практик жишээ — хэлбэрийн өгөгдөл боловсруулах
php
<?php
// POST хэлбэрийн өгөгдөл дуурайх
$_POST = [
"нэр" => " Батбаяр ",
"имэйл" => "bat@EXAMPLE.MN",
"нас" => "25",
"хот" => "Улаанбаатар",
];
function хэлбэр_цэвэрлэх(array $өгөгдөл): array {
return [
"нэр" => trim($өгөгдөл["нэр"]),
"имэйл" => strtolower(trim($өгөгдөл["имэйл"])),
"нас" => (int) $өгөгдөл["нас"],
"хот" => trim($өгөгдөл["хот"]),
];
}
$цэвэр = хэлбэр_цэвэрлэх($_POST);
print_r($цэвэр);
// нэр: Батбаяр, имэйл: bat@example.mn, нас: 25, хот: Улаанбаатар
?>
Дараагийн хичээлд:
Массивын бэлэн функцүүдийг — array_map, array_filter, array_reduce, usort болон бусад — судална. Эдгээр функцүүд массивыг эрэмбэлэх, шүүх, хөрвүүлэхэд маш хүчирхэг хэрэгсэл юм.