Khám Phá function array() Trong PHP: Từ Căn Bản Đến Nâng Cao – Hướng Dẫn Chi Tiết
Lập trình PHP

Khám Phá function array() Trong PHP: Từ Căn Bản Đến Nâng Cao – Hướng Dẫn Chi Tiết

Bạn có đang gặp khó khăn trong việc quản lý dữ liệu phức tạp trong PHP? Mảng chính là chìa khóa! Và array() là cách cơ bản nhất để bạn bắt đầu làm việc với chúng. Trong series "Tìm hiểu các function trong PHP" hôm nay, chúng ta sẽ đi sâu vào "trái tim" của cấu trúc dữ liệu này: hàm array(). Dù bạn là người mới bắt đầu hay một lập trình viên PHP lâu năm, bài viết này sẽ cung cấp cho bạn cái nhìn toàn diện, từ những khái niệm cơ bản nhất đến những điểm nâng cao và sự phát triển của nó qua các phiên bản PHP.

PHP, với hơn 77% các trang web sử dụng nó làm ngôn ngữ phía máy chủ (theo W3Techs tính đến tháng 7/2025), luôn ưu tiên việc xử lý dữ liệu hiệu quả. Mảng, cùng với hàm array(), đóng vai trò cực kỳ quan trọng trong việc đạt được điều đó.

I. Mảng (Array) Là Gì Trong PHP?

Trong lập trình, mảng là một biến đặc biệt có thể lưu trữ nhiều giá trị cùng lúc, thay vì chỉ một giá trị đơn lẻ. Hãy tưởng tượng bạn có một danh sách mua sắm; thay vì tạo ra mon_1, mon_2, mon_3, bạn có thể nhóm tất cả chúng vào một "giỏ hàng" duy nhất. Đó chính là ý nghĩa của mảng.

Mảng trong PHP là một cấu trúc dữ liệu có tính linh hoạt cao. Nó không chỉ là một danh sách có thứ tự mà còn là một bản đồ (map), nơi bạn có thể liên kết các khóa (keys) với các giá trị (values). Điều này mở ra nhiều khả năng mạnh mẽ để tổ chức và thao tác dữ liệu.

II. Hàm array(): Bắt Đầu Với Mảng

Hàm array() là một cấu trúc ngôn ngữ trong PHP được dùng để tạo ra một mảng. Trước PHP 5.4, đây là cách duy nhất để khai báo một mảng trực tiếp.

2.1 Cú Pháp Cơ Bản của array()

Cú pháp để tạo một mảng rỗng hoặc một mảng với các giá trị ban đầu là:

array(
    key  =>  value,
    key2  =>  value2,
    ...
)

Hoặc, nếu bạn chỉ muốn tạo một mảng có các chỉ số số nguyên tự động:

array(value1, value2, value3, ...)

Trong đó:

  • key (tùy chọn): Có thể là số nguyên hoặc chuỗi. Nếu bỏ qua, PHP sẽ tự động gán các chỉ mục số nguyên bắt đầu từ 0.
  • value: Bất kỳ kiểu dữ liệu nào (chuỗi, số, boolean, object, thậm chí là một mảng khác).

2.2 Các Loại Mảng Trong PHP

PHP hỗ trợ ba loại mảng chính, tất cả đều có thể được tạo bằng array():

a) Mảng Chỉ Mục Số (Indexed Arrays)

Đây là loại mảng phổ biến nhất, nơi mỗi phần tử được truy cập thông qua một chỉ số số nguyên. Các chỉ số này thường bắt đầu từ 0 và tăng dần.

Ví dụ:

<?php
// Khai báo mảng chỉ mục số sử dụng array()
$fruits = array("Táo", "Cam", "Xoài");

echo $fruits[0]; // Output: Táo
echo $fruits[1]; // Output: Cam
echo $fruits[2]; // Output: Xoài

echo "<br>";

// Thêm phần tử vào cuối mảng
$fruits[] = "Nho";
echo $fruits[3]; // Output: Nho

// Mảng với chỉ mục tùy chỉnh (không khuyến khích cho mảng chỉ mục số thuần túy)
$numbers = array(1 => 10, 5 => 20, 2 => 30);
echo $numbers[1]; // Output: 10
echo $numbers[5]; // Output: 20
echo $numbers[2]; // Output: 30
?>

b) Mảng Kết Hợp (Associative Arrays)

Trong mảng kết hợp, mỗi phần tử được truy cập thông qua một khóa chuỗi (tên) thay vì chỉ số số nguyên. Điều này làm cho mảng kết hợp cực kỳ hữu ích khi bạn muốn lưu trữ dữ liệu có ý nghĩa hơn, chẳng hạn như thông tin về một đối tượng.

Ví dụ:

<?php
// Khai báo mảng kết hợp sử dụng array()
$person = array(
    "name" => "Nguyễn Văn A",
    "age" => 30,
    "city" => "Hà Nội"
);

echo $person["name"]; // Output: Nguyễn Văn A
echo $person["age"];  // Output: 30

echo "<br>";

// Thêm hoặc cập nhật phần tử
$person["email"] = "nguyenvana@example.com";
echo $person["email"]; // Output: nguyenvana@example.com
?>

c) Mảng Đa Chiều (Multidimensional Arrays)

Mảng đa chiều là mảng chứa các mảng khác bên trong nó. Điều này cho phép bạn lưu trữ dữ liệu phức tạp hơn, chẳng hạn như ma trận hoặc danh sách các bản ghi.

Ví dụ:

<?php
// Khai báo mảng đa chiều sử dụng array()
$students = array(
    array("An", 20, "Hà Nội"),
    array("Bình", 22, "TP.HCM"),
    array("Cúc", 21, "Đà Nẵng")
);

echo $students[0][0]; // Output: An
echo $students[1][2]; // Output: TP.HCM

echo "<br>";

// Duyệt mảng đa chiều
foreach ($students as $student) {
    echo "Tên: " . $student[0] . ", Tuổi: " . $student[1] . ", Thành phố: " . $student[2] . "<br>";
}
?>

2.3 Thao Tác Cơ Bản Với Mảng

Sau khi đã tạo mảng, bạn cần biết cách thao tác với chúng:

  • Truy cập phần tử: Sử dụng [] với chỉ số hoặc khóa. echo $myArray[0]; hoặc echo $myArray['key'];
  • Thêm/Cập nhật phần tử: Gán giá trị vào một chỉ số/khóa. $myArray[] = "Giá trị mới"; hoặc $myArray['key_moi'] = "Giá trị mới";
  • Xóa phần tử: Sử dụng hàm unset(). unset($myArray[0]); hoặc unset($myArray['key']);
  • Kiểm tra sự tồn tại: Sử dụng isset() hoặc array_key_exists(). if (isset($myArray['key'])) { ... }

III. Cú Pháp Khai Báo Mảng Ngắn Gọn ([]) – Bước Tiến Lớn Từ PHP 5.4

Từ PHP 5.4 trở đi, một cú pháp ngắn gọn hơn, trực quan hơn để khai báo mảng đã được giới thiệu: []. Đây là cú pháp được khuyến nghị sử dụng trong các dự án PHP hiện đại. Nó đơn giản là một cách thay thế cho array(), không có sự khác biệt về chức năng.

Ví dụ:

<?php
// Mảng chỉ mục số
$fruitsShort = ["Táo", "Cam", "Xoài"];

// Mảng kết hợp
$personShort = [
    "name" => "Trần Thị B",
    "age" => 25,
    "city" => "Đà Nẵng"
];

// Mảng đa chiều
$studentsShort = [
    ["Dũng", 20, "Hà Nội"],
    ["Lan", 22, "TP.HCM"]
];

echo $fruitsShort[0]; // Output: Táo
echo $personShort["name"]; // Output: Trần Thị B
echo $studentsShort[0][0]; // Output: Dũng
?>

Tại sao nên dùng [] thay vì array()?

  • Ngắn gọn hơn: Giúp code sạch sẽ và dễ đọc hơn, đặc biệt với các mảng lớn hoặc mảng lồng nhau.
  • Hiện đại hơn: Là tiêu chuẩn trong các dự án PHP mới.
  • Không có sự khác biệt về hiệu suất: Cả hai cú pháp đều được PHP engine xử lý tương tự nhau.

IV. Các Hàm Hỗ Trợ Mảng Phổ Biến Khác (Liên Quan Đến array())

Mặc dù array() dùng để tạo mảng, nhưng để thao tác hiệu quả với chúng, PHP cung cấp một thư viện phong phú các hàm xử lý mảng. Dưới đây là một số hàm quan trọng:

  • count(): Đếm số lượng phần tử trong mảng. $count = count($fruits);
  • in_array(): Kiểm tra xem một giá trị có tồn tại trong mảng hay không. if (in_array("Táo", $fruits)) { ... }
  • array_push(): Thêm một hoặc nhiều phần tử vào cuối mảng. array_push($fruits, "Lê", "Ổi");
  • array_pop(): Xóa và trả về phần tử cuối cùng của mảng. $lastFruit = array_pop($fruits);
  • array_merge(): Gộp hai hoặc nhiều mảng lại với nhau. $mergedArray = array_merge($fruits, $vegetables);
  • sort() / rsort(): Sắp xếp mảng chỉ mục số theo thứ tự tăng/giảm dần. sort($fruits);
  • asort() / arsort(): Sắp xếp mảng kết hợp theo giá trị (tăng/giảm dần). asort($person);
  • ksort() / krsort(): Sắp xếp mảng kết hợp theo khóa (tăng/giảm dần). ksort($person);
  • array_map(): Áp dụng một hàm callback cho mỗi phần tử của mảng. $lengths = array_map('strlen', $fruits);
  • array_filter(): Lọc các phần tử của mảng dựa trên một hàm callback. $evenNumbers = array_filter($numbers, function($n){ return $n % 2 == 0; });

Việc nắm vững các hàm này sẽ giúp bạn xử lý dữ liệu trong mảng một cách linh hoạt và hiệu quả hơn rất nhiều.

V. array() Qua Các Phiên Bản PHP: Lịch Sử và Sự Phát Triển

Hàm array() là một cấu trúc ngôn ngữ cốt lõi của PHP và chưa bao giờ bị loại bỏ. Tuy nhiên, PHP đã trải qua những thay đổi đáng kể về cú pháp khai báo mảng và các tính năng liên quan đến mảng qua các phiên bản.

Dưới đây là bảng đối chiếu sự phát triển của cú pháp khai báo mảng và các hàm liên quan đến mảng qua các phiên bản PHP từ 5.2 đến 8.3:

Phiên Bản PHP Khai Báo Mảng (array()) Cú Pháp Khai Báo Mảng Ngắn Gọn ([]) Các Tính Năng/Hàm Liên Quan Đến Mảng Đáng Chú Ý Trạng Thái Hàm array() PHP 5.2 Có sẵn KHÔNG CÓ - Các hàm mảng cơ bản (count, sort, in_array, v.v.) đã có sẵn. Hoạt động bình thường. PHP 5.3 Có sẵn KHÔNG CÓ - Hỗ trợ anonymous functions (closures) có thể dùng với array_map, array_filter. Hoạt động bình thường. PHP 5.4 Có sẵn Được giới thiệu - Cú pháp [] trở thành cách khai báo mảng được khuyến khích. Hoạt động bình thường. PHP 5.5 Có sẵn Có sẵn - array_column() được giới thiệu để trích xuất một cột từ một mảng đa chiều. Hoạt động bình thường. PHP 5.6 Có sẵn Có sẵn - Hỗ trợ hằng số mảng (Array constants) với const. Hoạt động bình thường. PHP 7.0 Có sẵn Có sẵn - Giảm đáng kể mức sử dụng bộ nhớ cho các mảng. \<br\> - Thêm toán tử hợp nhất null ??. \<br\> - Cú pháp khai báo mảng ẩn danh (anonymous classes) nhưng không phải cho mảng.</br\></br\> Hoạt động bình thường. PHP 7.1 Có sẵn Có sẵn - Hỗ trợ Negative String Offsets (truy cập chuỗi từ cuối). \<br\> - Square bracket syntax for dereferencing (e.g., func()[0]).</br\> Hoạt động bình thường. PHP 7.2 Có sẵn Có sẵn - object_to_array conversion improvements (không phải hàm). \<br\> - Loại bỏ create_function (không liên quan trực tiếp đến array()).</br\> Hoạt động bình thường. PHP 7.3 Có sẵn Có sẵn - array_key_first(), array_key_last() để lấy khóa đầu tiên/cuối cùng. \<br\> - is_countable() để kiểm tra biến có thể đếm được hay không.</br\> Hoạt động bình thường. PHP 7.4 Có sẵn Có sẵn - Spread Operator (...) trong khai báo mảng (ví dụ: [...$array1, ...$array2]). \<br\> - Arrow functions (cú pháp ngắn gọn cho anonymous functions).</br\> Hoạt động bình thường. PHP 8.0 Có sẵn Có sẵn - str_contains(), str_starts_with(), str_ends_with() (không phải hàm mảng). \<br\> - WeakMap (liên quan đến map, nhưng không phải mảng thông thường).</br\> Hoạt động bình thường. PHP 8.1 Có sẵn Có sẵn - array_is_list() để kiểm tra xem một mảng có phải là danh sách số nguyên không tuần tự hay không. Hoạt động bình thường. PHP 8.2 Có sẵn Có sẵn - Các thay đổi nhỏ về hiệu suất và cảnh báo. Hoạt động bình thường. PHP 8.3 Có sẵn Có sẵn - Các cải tiến về hiệu suất và sửa lỗi. \<br\> - json_validate() (không phải hàm mảng).</br\> Hoạt động bình thường.

Kết luận về các phiên bản: Hàm array() không bị loại bỏ. Thay vào đó, cú pháp [] ra đời và trở thành lựa chọn ưu tiên từ PHP 5.4. Các phiên bản PHP sau này liên tục bổ sung thêm các hàm và cải tiến hiệu suất giúp việc thao tác với mảng trở nên mạnh mẽ và tiện lợi hơn.

VI. Tại Sao Nắm Vững array() (và Cú Pháp []) Lại Quan Trọng?

  • Xử lý dữ liệu đa dạng: Từ danh sách đơn giản đến cấu trúc dữ liệu phức tạp như JSON API responses, mảng là cách tiêu chuẩn để lưu trữ và xử lý.
  • Hiệu quả code: Sử dụng mảng đúng cách giúp giảm số lượng biến, làm code gọn gàng và dễ bảo trì hơn.
  • Nền tảng cho framework: Hầu hết các PHP framework (Laravel, Symfony, CodeIgniter...) đều sử dụng mảng rộng rãi để cấu hình, truyền dữ liệu và xử lý request. Hiểu mảng là điều kiện tiên quyết để làm việc hiệu quả với chúng.
  • Tối ưu hiệu suất: Với các cải tiến trong PHP 7+ và 8+, việc xử lý mảng đã trở nên cực kỳ nhanh chóng và tiết kiệm bộ nhớ hơn nhiều.

VII. Tối Ưu Hóa SEO cho Nội Dung Mảng trong PHP

Để bài viết này đạt chuẩn SEO tốt, ngoài việc sử dụng từ khóa chính và phụ một cách tự nhiên, bạn cũng cần chú ý đến:

  • Internal Linking: Liên kết đến các bài viết khác trong series "Tìm hiểu các function trong PHP" hoặc các bài viết liên quan khác trên blog của bạn. Ví dụ: "Tìm hiểu thêm về hàm count() trong PHP."
  • External Linking: Tham chiếu đến các nguồn uy tín như tài liệu PHP chính thức (php.net), W3Schools, Stack Overflow để tăng tính xác thực và cung cấp thêm thông tin cho độc giả.
  • Cấu trúc Heading: Sử dụng H1, H2, H3 một cách logic để trình bày nội dung rõ ràng, dễ đọc cho cả người dùng và công cụ tìm kiếm.
  • Đoạn văn ngắn gọn: Giữ các đoạn văn ngắn và súc tích, tránh các khối văn bản lớn.
  • Sử dụng Code Blocks: Các ví dụ code được định dạng rõ ràng trong các block code giúp người đọc dễ dàng sao chép và thử nghiệm.

Tham khảo thêm:

VIII. Kết Luận

Hàm array() (hay cú pháp ngắn gọn []) không chỉ là một công cụ cơ bản mà còn là một trụ cột trong lập trình PHP. Nắm vững cách tạo, thao tác và quản lý mảng là kỹ năng thiết yếu đối với bất kỳ lập trình viên PHP nào. Từ việc lưu trữ dữ liệu người dùng đến xử lý các tập dữ liệu phức tạp, mảng luôn là lựa chọn hàng đầu.

Việc PHP liên tục cải tiến cách thức hoạt động và hiệu suất của mảng qua các phiên bản cho thấy tầm quan trọng của nó. Bằng cách áp dụng những kiến thức trong bài viết này, bạn sẽ không chỉ viết code sạch hơn, hiệu quả hơn mà còn sẵn sàng đối phó với những thách thức dữ liệu phức tạp nhất trong các dự án PHP của mình.

Bạn đã sẵn sàng để ứng dụng mảng vào dự án tiếp theo của mình chưa? Hãy chia sẻ kinh nghiệm của bạn về việc sử dụng mảng trong PHP ở phần bình luận bên dưới nhé!

Kelvin Zeng

Senior Website Developer

👨‍💻 Senior PHP Developer, hiện đảm nhận vai trò Techlead. Tôi có kinh nghiệm làm việc trong môi trường công ty Nhật Bản, từng tham gia thiết kế tài liệu kỹ thuật (Basic Design, Detail Design) và lập kế hoạch dự án với vai trò như một Project Lead. Trong sự nghiệp, tôi đã tham gia xây dựng và triển khai nhiều hệ thống E-commerce cũng như làm việc với nhiều framework khác nhau. Ngoài lập trình, tôi quan tâm đến SEO, automation và marketing, đặc biệt yêu thích việc phát triển các công cụ giúp tối ưu công việc. Tôi luôn sẵn sàng chia sẻ kiến thức, đồng hành cùng đồng đội để nâng cao chuyên môn và đạt được những mục tiêu lớn hơn.