Một mảng là một cấu trúc dữ liệu mà lưu giữ một hoặc nhiều kiểu giá trị giống nhau trong một giá trị đơn. Ví dụ, nếu bạn muốn lưu 100 số, thì thay vì định nghĩa 100 biến, nó là dễ dàng để định nghĩa một mảng có độ dài là 100.
Có 3 loại mảng khác nhau và mỗi giá trị mảng được truy cập bởi sử dụng một ID, mà được gọi là chỉ mục mảng.
- Mảng số nguyên − Một mảng có chỉ mục ở dạng số. Giá trị được lưu trữ và truy cập tuyến tính.
- Mảng liên hợp − Một mảng với chỉ mục ở dạng chuỗi kí tự. Mảng này lưu trữ các giá trị phần tử bằng sự kết hợp với các giá trị key thay vì trong một trật tự chỉ mục tuyến tính nghiêm ngặt như mảng số nguyên.
- Mảng đa chiều − Một mảng chứa một hoặc nhiều mảng và các giá trị được truy cập bằng cách sử dụng nhiều chỉ mục.
Mảng số nguyên trong PHP
Các mảng loại này có thể lưu trữ các số, các chuỗi và bất kỳ đối tượng nào, nhưng chỉ mục mảng thì vẫn được biểu diễn bởi các số. Theo mặc định, chỉ mục mảng bắt đầu từ 0.
Ví dụ
Mảng này có thể lưu trữ số, chuỗi và bất kì đối tượng nào, nhưng chỉ mục của chúng sẽ được biểu diễn ở dạng số. Theo mặc định chỉ mục mảng bắt đầu từ 0.
Dưới đây là ví dụ minh họa cách tạo và truy cập mảng số nguyên trong PHP.
Ở đây, chúng ta đã sử dụng hàm array() để tạo mảng. Hàm này được giải thích trong chương phụ: Hàm mảng trong PHP ở trên.
<html> <body> <?php /* Phương thức thứ nhất để tạo mảng trong PHP. */ $numbers = array( 1, 2, 3, 4, 5); foreach( $numbers as $value ) { echo "Giá trị phần tử mảng là $value <br />"; } /* Phương thức thứ hai để tạo mảng trong PHP. */ $numbers[0] = "one"; $numbers[1] = "two"; $numbers[2] = "three"; $numbers[3] = "four"; $numbers[4] = "five"; foreach( $numbers as $value ) { echo "Giá trị phần tử mảng là $value <br />"; } ?> </body> </html>
Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:
Mảng liên hợp trong PHP
Các mảng liên hợp là khá giống với các mảng số nguyên về tính năng, nhưng chúng khác nhau về chỉ mục. Mảng liên hợp sẽ có chỉ mục ở dạng chuỗi để mà bạn có thể thiết lập một liên kết mạnh giữa key và value.
Để lưu giữ lương của nhân viên trong một mảng, một mảng chỉ mục số sẽ không là lựa chọn tốt nhất. Thay vào đó, chúng ta sẽ sử dụng các tên nhân viên như là các key trong mảng liên hợp, và value sẽ là lương tương ứng của họ.
Chú ý: Đừng giữ mảng liên hợp bên trong dấu trích dẫn kép trong khi in, nếu không thì nó sẽ không trả về bất kỳ giá trị nào.
Ví dụ
<html> <body> <?php /* Phương thức thứ nhất để tạo mảng liên hợp. */ $luong_nhan_vien = array("hoang" => 2000, "manh" => 1000, "huong" => 500); echo "Lương của nhân viên hoang là ". $luong_nhan_vien['hoang'] . "<br />"; echo "Lương của nhân viên manh là ". $luong_nhan_vien['manh']. "<br />"; echo "Lương của nhân viên huong là ". $luong_nhan_vien['huong']. "<br />"; /* Phương thức thứ hai để tạo mảng liên hợp. */ $luong_nhan_vien['hoang'] = "high"; $luong_nhan_vien['manh'] = "medium"; $luong_nhan_vien['huong'] = "low"; echo "Mức lương của nhân viên hoang là ". $luong_nhan_vien['hoang'] . "<br />"; echo "Mức lương của nhân viên manh là ". $luong_nhan_vien['manh']. "<br />"; echo "Mức lương của nhân viên huong là ". $luong_nhan_vien['huong']. "<br />"; ?> </body> </html>
Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:
Mảng đa chiều trong PHP
Trong một mảng đa chiều, mỗi phần tử cũng có thể là một mảng. Và mỗi phần tử trong một mảng phụ có thể là một mảng, và cứ tiếp tục như vậy. Các giá trị trong mảng đa dạng được truy cập bởi sử dụng nhiều chỉ mục.
Ví dụ
Trong ví dụ này, chúng ta tạo một mảng hai chiều để lưu giữ điểm 3 môn học của 3 sinh viên.
Ví dụ này là một mảng đa chiều, bạn có thể tạo một mảng số nguyên theo cách tương tự.
<html> <body> <?php $diemThi = array( "hoang" => array ( "monVatLy" => 7, "monToan" => 8, "monHoa" => 9 ), "manh" => array ( "monVatLy" => 7, "monToan" => 9, "monHoa" => 6 ), "huong" => array ( "monVatLy" => 8, "monToan" => 8, "monHoa" => 9 ) ); /* truy cập các giá trị của mảng đa chiều */ echo "Điểm thi môn Vật Lý của hoang là: " ; echo $diemThi['hoang']['monVatLy'] . "<br />"; echo "Điểm thi môn Toán của manh là: "; echo $diemThi['manh']['monToan'] . "<br />"; echo "Điểm thi môn Hóa của huong là: " ; echo $diemThi['huong']['monHoa'] . "<br />"; ?> </body> </html>
Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:
Ghi chú − Các hàm xử lý mảng có sẵn được cung cấp trong PHP
Những hàm này cho phép bạn tương tác với và thao tác các mảng (array) theo các cách đa dạng. Mảng (Array) là thiết yếu cho việc lưu giữ, quản lý và hoạt động trên tập hợp các biến.
Cài đặt Không cần thiết bất kỳ cài đặt nào để sử dụng những hàm này, chúng là một phần của PHP Core.
Cấu hình Runtime Extension này không có chỉ thị cấu hình nào được định nghĩa trong php.ini.
Hằng mảng trong PHP Bảng dưới liệt kê các hằng mảng (Array Constanst) trong PHP.
Hằng | Miêu tả |
---|---|
CASE_LOWER | Được sử dụng với hàm array_change_key_case() để chuyển đổi key của mảng thành chữ thường |
CASE_UPPER | Được sử dụng với hàm array_change_key_case() để chuyển đổi key của mảng thành chữ hoa |
SORT_ASC | Được sử dụng với hàm array_multisort() để xếp thứ tự tăng dần |
SORT_DESC | Được sử dụng với hàm array_multisort() để xếp thứ tự giảm dần |
SORT_REGULAR | Được sử dụng để so sánh các item theo cách thông thường |
SORT_NUMERIC | Được sử dụng để so sánh các item về số lượng |
SORT_STRING | Được sử dụng để so sánh các item như là string |
SORT_LOCALE_STRING | Được sử dụng để so sánh các item như là string, dựa trên Locale hiện tại |
COUNT_NORMAL | |
COUNT_RECURSIVE | |
EXTR_OVERWRITE | |
EXTR_SKIP | |
EXTR_PREFIX_SAME | |
EXTR_PREFIX_ALL | |
EXTR_PREFIX_INVALID | |
EXTR_PREFIX_IF_EXISTS | |
EXTR_IF_EXISTS | |
EXTR_REFS |
Danh sách hàm dùng để xử lý Mảng (Array) trong PHP
Để chạy các ví dụ, bạn sao chép phần PHP code vào phần // Phần PHP code ở dưới đây và sau đó lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả.
<html> <head> <title>Hàm xử lý mảng trong PHP</title> </head> <body> // Phần PHP code </body> </html>
Cột PHP chỉ phiên bản PHP sớm nhất mà hỗ trợ hàm đó.
Hàm | Miêu tả | PHP |
---|---|---|
Hàm array() | Tạo một mảng | 3 |
Hàm array_change_key_case() | Trả về một mảng với tất cả key trong dạng chữ hoa hoặc chữ thường | 4 |
Hàm array_chunk() | Chia một mảng thành một mảng các mảng | 4 |
Hàm array_combine() | Tạo một mảng bởi sử dụng một mảng cho key và mảng khác cho value | 5 |
Hàm array_count_values() | Trả về một mảng với số lần xuất hiện mỗi value | 4 |
Hàm array_diff() | So sánh các value của mảng, và trả về các sự khác nhau | 4 |
Hàm array_diff_assoc() | So sánh key và value của mảng, và trả về sự khác nhau | 4 |
Hàm array_diff_key() | So sánh các key của mảng, và trả về các sự khác nhau | 5 |
Hàm array_diff_uassoc() | So sánh key và value của mảng, với một hàm kiểm tra bổ sung do người dùng tạo, và trả về các sự khác nhau | 5 |
Hàm array_diff_ukey() | So sánh key của mảng, với một hàm kiểm tra bổ sung do người dùng tạo, và trả về các sự khác nhau | 5 |
Hàm array_fill() | Điền value vào một mảng | 4 |
Hàm array_fill_keys() | Điền value vào một mảng, chỉ rõ các key | 5 |
Hàm array_filter() | Lọc các phần tử của một mảng bởi sử dụng một hàm do người dùng tạo | 4 |
Hàm array_flip() | Trao đổi tất cả key với value được liên hợp với chúng trong một mảng | 4 |
Hàm array_intersect() | So sánh các value trong mảng và trả về các so khớp | 4 |
Hàm array_intersect_assoc() | So sánh các key và value trong mảng và trả về các so khớp | 4 |
Hàm array_intersect_key() | So sánh các key trong mảng và trả về các so khớp | 5 |
Hàm array_intersect_uassoc() | So sánh các key và value trong mảng, với một hàm kiểm tra bổ sung do người dùng tạo và trả về các so khớp | 5 |
Hàm array_intersect_ukey() | So sánh các key trong mảng, với một hàm kiểm tra bổ sung do người dùng tạo và trả về các so khớp | 5 |
Hàm array_key_exists() | Kiểm tra xem key đã cho có tồn tại trong mảng không | 4 |
Hàm array_keys() | Trả về tất cả key của một mảng | 4 |
Hàm array_map() | Gửi mỗi value của một mảng tới một hàm do người dùng tạo, mà trả về các value mới | 4 |
Hàm array_merge() | Sáp nhập một hoặc nhiều mảng thành một mảng | 4 |
Hàm array_merge_recursive() | Sáp nhập một hoặc nhiều mảng thành một mảng | 4 |
Hàm array_multisort() | Sắp xếp các mảng đa chiều | 4 |
Hàm array_pad() | Chèn số lượng item đã xác định với một value đã xác định vào một mảng | 4 |
Hàm array_pop() | Xóa phần tử cuối cùng của một mảng | 4 |
Hàm array_product() | Tính toán tích các value trong một mảng | 5 |
Hàm array_push() | Chèn một hoặc nhiều phần tử vào phần cuối của một mảng | 4 |
Hàm array_rand() | Trả về một hoặc nhiều key ngẫu nhiên từ một mảng | 4 |
Hàm array_reduce() | Trả về một mảng ở dạng string, sử dụng hàm do người dùng tạo | 4 |
Hàm array_reverse() | Trả về một mảng với thứ tự bị đảo ngược | 4 |
Hàm array_search() | Tìm kiếm một mảng cho một value đã cho và trả về key | 4 |
Hàm array_shift() | Gỡ bỏ phần tử đầu tiên từ một mảng, và trả về value của phần tử bị gỡ bỏ | 4 |
Hàm array_slice() | Trả về các phần đã chọn của một mảng | 4 |
Hàm array_splice() | Gỡ bỏ và thay thế các phần tử đã xác định của một mảng | 4 |
Hàm array_sum() | Trả về tổng các value trong một mảng | 4 |
Hàm array_udiff() | So sánh các value của mảng trong một hàm do người dùng tạo và trả về một mảng | 5 |
Hàm array_udiff_assoc() | So sánh các key của mảng, và so sánh các value của mảng trong một hàm do người dùng tạo, và trả về một mảng | 5 |
Hàm array_udiff_uassoc() | So sánh các key và value của mảng trong một hàm do người dùng tạo, và trả về một mảng | 5 |
Hàm array_uintersect() | So sánh các value của mảng trong một hàm do người dùng tạo, và trả về một mảng | 5 |
Hàm array_uintersect_assoc() | So sánh các key của mảng, và so sánh các value của mảng trong một hàm do người dùng tạo, và trả về một mảng | 5 |
Hàm array_uintersect_uassoc() | So sánh các value của mảng trong một hàm do người dùng tạo, và trả về một mảng | 5 |
Hàm array_unique() | Gỡ bỏ bản sao các value từ một mảng | 4 |
Hàm array_unshift() | Thêm một hoặc nhiều phần tử tới phần đầu của mảng | 4 |
Hàm array_values() | Trả về tất cả value của một mảng | 4 |
Hàm array_walk() | Áp dụng một hàm do người dùng tạo tới mỗi thành viên của một mảng | 3 |
Hàm array_walk_recursive() | Áp dụng một hàm một cách đệ qui do người dùng tạo tới mỗi thành viên của một mảng | 5 |
Hàm arsort() | Sắp xếp một mảng với thứ tự đảo ngược và duy trì liên kết chỉ mục | 3 |
Hàm asort() | Sắp xếp một mảng và duy trì liên kết chỉ mục | 3 |
Hàm compact() | Tạo một mảng chứa các biến và các value của chúng | 4 |
Hàm count() | Đếm các phần tử trong một mảng, hoặc các thuộc tính trong một đối tượng | 3 |
Hàm current() | Trả về phần tử hiện tại trong một mảng | 3 |
Hàm each() | Trả về cặp key và value hiện tại từ một mảng | 3 |
Hàm end() | Thiết lập con trỏ nội bộ của một mảng tới phần tử cuối cùng của nó | 3 |
Hàm extract() | Nhập các biến vào trong bảng biểu tượng hiện tại từ một mảng | 3 |
Hàm in_array() | Kiểm tra nếu một value đã xác định là tồn tại trong một mảng | 4 |
Hàm key() | Lấy một key từ một mảng | 3 |
Hàm krsort() | Sắp xếp một mảng bằng các key theo thứ tự đảo ngược | 3 |
Hàm ksort() | Sắp xếp một mảng bằng các key | 3 |
Hàm list() | Gán các biến như nếu chúng là một mảng | 3 |
Hàm natcasesort() | Sắp xếp một mảng bởi sử dụng một thuật toán "natural order" không phân biệt kiểu chữ | 4 |
Hàm natsort() | Sắp xếp một mảng bởi sử dụng một thuật toán "natural order" | 4 |
Hàm next() | Tăng con trỏ mảng nội bộ hay trỏ tới phần tử kế tiếp của một mảng | 3 |
Hàm pos() | Alias của hàm current() | 3 |
Hàm prev() | Giảm con trỏ mảng nội bộ hay trỏ tới phần tử ở trước của một mảng | 3 |
Hàm range() | Tạo một mảng chứa một phạm vi phần tử | 3 |
Hàm reset() | Thiết lập con trỏ nội bộ của mảng về phần tử đầu tiên của nó | 3 |
Hàm rsort() | Sắp xếp một mảng theo thứ tự đảo ngược | 3 |
Hàm shuffle() | Xáo trộn một mảng | 3 |
Hàm sizeof() | Alias của hàm count() | 3 |
Hàm sort() | Sắp xếp một mảng | 3 |
Hàm uasort() | Sắp xếp một mảng với một hàm do người dùng tạo và duy trì liên kết chỉ mục | 3 |
Hàm uksort() | Sắp xếp một mảng bằng các key bởi sử dụng một hàm do người dùng tạo | 3 |
Hàm usort() | Sắp xếp một mảng bằng các value bởi sử dụng một hàm do người dùng tạo | 3 |