0

PHP và MySQL Bài 8: Mảng (Array) toàn tập - Quản lý tập hợp dữ liệu

Ở bài trước, chúng ta đã biết cách lưu trữ dữ liệu vào các biến. Tuy nhiên, một biến thông thường (như string hay integer) chỉ có thể chứa một giá trị duy nhất tại một thời điểm.

Hãy tưởng tượng bạn cần lưu trữ tên của 100 sản phẩm trong hệ thống. Nếu dùng biến thông thường, bạn sẽ phải tạo ra 100 biến ($sp1, $sp2,..., $sp100). Điều này là bất khả thi để quản lý. Giải pháp hoàn hảo chính là Mảng (Array) – một chiếc tủ có nhiều ngăn, cho phép lưu trữ hàng loạt giá trị bên trong một biến duy nhất.

Trong PHP, mảng được chia thành 3 loại chính:


1. Mảng tuần tự (Indexed Arrays)

Đây là loại mảng cơ bản nhất. Các phần tử trong mảng được tự động đánh số thứ tự (gọi là chỉ số - index), bắt đầu từ số 0.

Cú pháp khởi tạo:

Có hai cách để tạo mảng trong PHP: dùng hàm array() (cách cũ) hoặc dùng cặp ngoặc vuông [] (cách hiện đại, khuyên dùng từ PHP 5.4 trở lên).

<?php
    // Cách 1: Dùng array()
    $danhSachNgonNgu = array("PHP", "JavaScript", "Python", "Golang");

    // Cách 2: Dùng [] (Cú pháp ngắn gọn - Khuyên dùng)
    $danhSachFramework = ["Laravel", "NestJS", "Django", "Gin"];
    
    // Truy xuất phần tử: Sử dụng chỉ số (index)
    echo "Ngôn ngữ backend yêu thích của tôi là: " . $danhSachNgonNgu[0]; // Output: PHP
    
    // Thay đổi giá trị của một phần tử
    $danhSachFramework[1] = "ExpressJS"; // Đổi NestJS thành ExpressJS
?>

2. Mảng kết hợp (Associative Arrays)

Trong thực tế lập trình Backend, mảng kết hợp được sử dụng nhiều nhất. Thay vì dùng số 0, 1, 2 làm chỉ số, bạn có thể tự đặt tên cho các ngăn tủ (được gọi là Khóa - Key) để biểu diễn dữ liệu rõ ràng hơn dưới dạng Key => Value (Khóa => Giá trị).

Cấu trúc này cực kỳ giống với định dạng JSON khi giao tiếp API.

<?php
    $thongTinNguoiDung = [
        "id" => 101,
        "ho_ten" => "Nguyễn Văn A",
        "email" => "vana@example.com",
        "vai_tro" => "admin"
    ];

    // Truy xuất phần tử thông qua Key
    echo "Xin chào, " . $thongTinNguoiDung["ho_ten"] . "!";
    echo "Email của bạn là: " . $thongTinNguoiDung["email"];

    // Thêm một phần tử mới vào mảng kết hợp
    $thongTinNguoiDung["so_dien_thoai"] = "0987654321";
?>

3. Mảng đa chiều (Multidimensional Arrays)

Khi dữ liệu phức tạp hơn, một mảng không chỉ chứa các chuỗi hay số, mà mỗi ngăn tủ lại chứa thêm một mảng khác. Đây gọi là mảng đa chiều (mảng lồng mảng).

💡 Ví dụ thực tế: Lưu trữ một danh sách gồm nhiều người dùng.

<?php
    $danhSachNhanVien = [
        [
            "id" => 1,
            "ten" => "Trần Thị B",
            "phong_ban" => "IT"
        ],
        [
            "id" => 2,
            "ten" => "Lê Văn C",
            "phong_ban" => "Kế Toán"
        ],
        [
            "id" => 3,
            "ten" => "Phạm Văn D",
            "phong_ban" => "Nhân Sự"
        ]
    ];

    // Truy xuất phần tử trong mảng đa chiều
    // Lấy tên của nhân viên thứ 2 (chỉ số 1 vì bắt đầu từ 0)
    echo "Nhân viên thứ hai là: " . $danhSachNhanVien[1]["ten"]; // Output: Lê Văn C
?>

4. Các hàm xử lý Mảng thông dụng nhất

PHP cung cấp hàng trăm hàm dựng sẵn để thao tác với mảng cực kỳ mạnh mẽ. Dưới đây là những hàm "must-know" (bắt buộc phải biết):

  • count($array): Đếm tổng số phần tử trong mảng.

    $soNhanVien = count($danhSachNhanVien); // Kết quả: 3
    
  • array_push($array, $value1, $value2, ...): Thêm một hoặc nhiều phần tử vào cuối mảng tuần tự.

    $gioHang = ["Laptop", "Chuột"];
    array_push($gioHang, "Bàn phím"); // $gioHang lúc này là: ["Laptop", "Chuột", "Bàn phím"]
    
  • array_pop($array): Lấy ra và xóa phần tử ở cuối mảng.

  • in_array($value, $array): Kiểm tra xem một giá trị có tồn tại trong mảng hay không (trả về Boolean). Rất hay dùng để kiểm tra quyền hạn (Roles).

    $cacQuyenChoPhep = ["admin", "editor", "moderator"];
    $quyenHienTai = "user";
    
    if (in_array($quyenHienTai, $cacQuyenChoPhep)) {
        echo "Bạn có quyền truy cập.";
    } else {
        echo "Từ chối truy cập!";
    }
    
  • array_keys($array) / array_values($array): Lấy ra toàn bộ danh sách các Khóa (Keys) hoặc toàn bộ các Giá trị (Values) của một mảng kết hợp và trả về dưới dạng một mảng tuần tự.


Tổng kết Bài 8

Việc làm chủ cấu trúc Mảng (Array) và hiểu cách duyệt mảng bằng vòng lặp foreach (đã học ở Bài 7) là hai kỹ năng sống còn giúp bạn xử lý mọi dạng dữ liệu từ đơn giản đến phức tạp trong hệ thống Backend.

Ở bài học tiếp theo – Bài 9: Các hàm (Functions) có sẵn và cách tự định nghĩa hàm, chúng ta sẽ học cách đóng gói các đoạn code xử lý thành từng "module" nhỏ gọn để có thể tái sử dụng ở bất cứ đâu trong dự án.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí