PHP / Жагсаалт массив

Жагсаалт массив

Массив бол олон утгыг нэг хувьсагчид хадгалах хэрэгсэл юм. "Оролцогчдын жагсаалт", "бүтээгдэхүүний үнэнүүд", "сүүлийн 10 мессеж" гэх мэт бүх зүйлд массив хэрэглэнэ. Жагсаалт массив (indexed array) нь 0-с эхлэх дугаар индексээр элементдээ хандах хамгийн энгийн хэлбэр юм.

Массив үүсгэх

php
<?php
// Богино хэлбэр — хамгийн түгээмэл
$хотууд = ["Улаанбаатар", "Дархан", "Эрдэнэт", "Чойбалсан"];

// array() функцаар — хуучин хэлбэр
$тоонууд = array(10, 20, 30, 40, 50);

// Хоосон массив үүсгэж элемент нэмэх
$жагсаалт = [];
$жагсаалт[] = "нэгдүгээр";   // автоматаар 0-р индекс
$жагсаалт[] = "хоёрдугаар";  // 1-р индекс
$жагсаалт[] = "гуравдугаар"; // 2-р индекс

// Холимог төрөлтэй боломжтой (гэхдээ заншилгүй)
$холимог = [42, "PHP", true, 3.14, null];

print_r($хотууд);
// Array ( [0] => Улаанбаатар [1] => Дархан [2] => Эрдэнэт [3] => Чойбалсан )
?>

Элементэд хандах ба өөрчлөх

Индекс нь 0-с эхэлдгийг анхаарна уу — энэ нь маш чухал:

php
<?php
$өнгөнүүд = ["улаан", "ногоон", "цэнхэр", "шар", "ягаан"];

// Унших
echo $өнгөнүүд[0];   // улаан  (эхний)
echo $өнгөнүүд[2];   // цэнхэр (гуравдугаар)
echo $өнгөнүүд[4];   // ягаан  (сүүлийн)

// Сүүлийн элементэд хандах
$сүүлийн_индекс = count($өнгөнүүд) - 1;
echo $өнгөнүүд[$сүүлийн_индекс];   // ягаан

// Өөрчлөх
$өнгөнүүд[1] = "хар";
echo $өнгөнүүд[1];   // хар

// Тодорхой индекст нэмэх
$өнгөнүүд[10] = "цагаан";   // индекс 5–9 хоосон орно
echo count($өнгөнүүд);      // 7

// Байхгүй индекст хандах
// echo $өнгөнүүд[99];  ← Warning: Undefined offset 99
?>

Элемент нэмэх ба устгах

php
<?php
$жагсаалт = ["PHP", "JavaScript", "Python"];

// Сүүлд нэмэх
$жагсаалт[] = "Go";
array_push($жагсаалт, "Rust", "Swift");   // Нэг удаад олон нэмэх

// Эхэнд нэмэх
array_unshift($жагсаалт, "HTML", "CSS");

// Сүүлийн элементийг авч устгах
$сүүлийн = array_pop($жагсаалт);   // Swift авна

// Эхний элементийг авч устгах
$эхний = array_shift($жагсаалт);   // HTML авна

// Тодорхой индексийг устгах
unset($жагсаалт[1]);   // Индекс нь цоорхой үлдэнэ — дахин дугаарлагдахгүй

// Цоорхойг засаж дахин дугаарлах
$жагсаалт = array_values($жагсаалт);

echo implode(", ", $жагсаалт);
?>

foreach ба for давталт

php
<?php
$хичээлүүд = ["PHP", "MySQL", "Laravel", "Composer", "REST API"];

// foreach — хамгийн энгийн, индекс хэрэггүй үед
foreach ($хичээлүүд as $хичээл) {
    echo "- $хичээл\n";
}

// Индекстэй foreach
foreach ($хичээлүүд as $и => $хичээл) {
    echo ($и + 1) . ". $хичээл\n";   // 1. PHP, 2. MySQL ...
}

// for давталт — индекс хэрэгтэй, буцаагаар, алгасуулах гэх мэт
$нийт = count($хичээлүүд);
for ($i = $нийт - 1; $i >= 0; $i--) {
    echo "$i: {$хичээлүүд[$i]}\n";   // Урвуу дарааллаар
}

// Хоёр массив нэгэн зэрэг давтах
$нэрнүүд = ["Дорж", "Болд", "Анар"];
$насууд   = [25, 31, 28];

for ($i = 0; $i < count($нэрнүүд); $i++) {
    echo "{$нэрнүүд[$i]}{$насууд[$i]} нас\n";
}
?>

Олон хэмжээст массив

Массивын элемент нь өөрөө массив байж болно:

php
<?php
// 2D массив — жагсаалтын жагсаалт
$тоглоомын_самбар = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];

echo $тоглоомын_самбар[1][2];   // 6 (2-р мөр, 3-р багана)

// Хүснэгт дүрслэх
foreach ($тоглоомын_самбар as $мөр) {
    foreach ($мөр as $нүд) {
        echo str_pad($нүд, 3);
    }
    echo "\n";
}
//   1  2  3
//   4  5  6
//   7  8  9

// Оюутны жагсаалт
$оюутнууд = [
    ["Батбаяр", 88, "А"],
    ["Дорж",    74, "С"],
    ["Анар",    95, "А+"],
];

foreach ($оюутнууд as [$нэр, $оноо, $дүн]) {
    echo "$нэр: $оноо оноо — $дүн дүн\n";
}
?>

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

Холбоот массивыг — associative array — судална. Тоон индексийн оронд мөр түлхүүр ашигладаг энэ хэлбэр нь бүтэцтэй өгөгдөл — хэрэглэгчийн мэдээлэл, тохиргоо, JSON өгөгдөл — хадгалахад хамгийн тохиромжтой.