Nội dung
Mảng trong PHP (array) là một kiểu dữ liệu đặc biệt, cùng lúc có thể chứa nhiều hơn một phần tử trong một biến duy nhất.
Sử dụng mảng mang lại nhiều lợi ích nhất định, trong đó có việc giảm thiểu chi phí và thời gian thực hiện dự án.
Thế nhưng, bạn đã nắm rõ các mảng thông dụng và chức năng của chúng hay chưa?
Mảng trong PHP là gì?
Mảng trong PHP hay Array PHP là một kiểu cấu trúc dữ liệu cho phép bạn lưu trữ nhiều phần tử của kiểu dữ liệu tương tự nhau dưới một biến duy nhất.
Nhờ đó, bạn sẽ tiết kiệm được thời gian và công sức, không cần phải tạo ra từng biến cho từng dữ liệu.
Các mảng trong PHP cũng giúp tạo ra danh danh các phần tử có kiểu tương tự, có thể được truy cập bằng chỉ mục hoặc key của chúng.
Mảng được tạo ra bằng cách sử dụng hàm array() trong PHP.
Array PHP hoạt động như thế nào?
Như bạn đã biết, các mảng chính là các biến có thể chứa nhiều hơn một giá trị. Dưới đây là một số thông tin cơ bản về mảng PHP:
- Một mảng có thể chứa bất kỳ số lượng value nào, thậm chí là có thể không có value nào
- Mỗi value trong một mảng được gọi là phần tử
- Bạn truy cập từng phần tử thông qua chỉ mục của nó, là một giá trị số hoặc chuỗi. Mỗi phần tử trong mảng sẽ có mỗi chỉ mục duy nhất tương ứng.
- Một phần tử có thể lưu trữ bất kỳ kiểu value nào, chẳng hạn như số nguyên, chuỗi hoặc kiểu dữ liệu Boolean. Bạn có thể kết hợp các kiểu này trong cùng một mảng
- Độ dài của mảng là số phần tử trong mảng
- Bản thân value của phần tử mảng có thể là một mảng. Do đó, bạn có thể tạo ra các mảng đa chiều.
Lợi ích của việc sử dụng mảng (array) trong PHP
Dưới đây là những lợi ích mà mảng PHP mang lại:
- Dễ thao tác, thêm hoặc xóa các phần tử trong một mảng, chẳng hạn như đọc hoặc thay đổi value của một phần tử.
- Dễ dàng làm việc với nhiều value cùng một lúc. Bạn có thể xem đi xem lại tất cả các phần tử trong một mảng, đọc hoặc thay đổi value của từng phần tử trong quá trình xem đi xem lại các phần tử đó.
- PHP cung cấp cho bạn nhiều hàm liên quan đến mảng rất hữu ích. Ví dụ: sắp xếp các phần tử mảng nhanh chóng và dễ dàng, tìm kiếm mảng cho các value hoặc chỉ số cụ thể, hợp nhất các mảng với nhau,…
Các loại mảng trong PHP
Có 3 loại mảng khác nhau và mỗi value của mảng đều được truy cập bằng ID C được gọi là chỉ số mảng:
- Mảng chỉ số: Các value được lưu trữ và truy cập theo kiểu tuyến tính.
- Mảng kết hợp: Các value của phần tử kết hợp được lưu trữ với các giá trị key thay vì theo một thứ tự chỉ mục tuyến tính nghiêm ngặt.
- Mảng đa chiều: Mảng chứa một hoặc nhiều mảng và value được truy cập bằng nhiều chỉ số
Để giúp bạn hiểu sâu hơn, tôi sẽ nêu rõ thông tin chi tiết và ví dụ minh họa về 3 loại mảng trong PHP này:
Mảng chỉ số
Các mảng này có thể lưu trữ số, chuỗi và bất cứ đối tượng nào nhưng chỉ mục của chúng sẽ được biểu diễn bằng các số. Theo mặc định, chỉ mục mảng bắt đầu từ số 0.
Ví dụ:
Trong ví dụ này, bạn sẽ thấy được cách tạo và truy cập mảng chỉ số
Ở đây, tôi sử dụng hàm array() để tạo mảng.
<html>
<body>
<?php
/* First method to create array. */
$numbers = array( 1, 2, 3, 4, 5);
foreach( $numbers as $value ) {
echo “Value is $value <br />”;
}
/* Second method to create array. */
$numbers[0] = “one”;
$numbers[1] = “two”;
$numbers[2] = “three”;
$numbers[3] = “four”;
$numbers[4] = “five”;
foreach( $numbers as $value ) {
echo “Value is $value <br />”;
}
?>
</body>
</html>
Và kết quả sẽ như sau:
Value is 1
Value is 2
Value is 3
Value is 4
Value is 5
Value is one
Value is two
Value is three
Value is four
Value is five
Mảng kết hợp
Mảng kết hợp tương tự như mảng chỉ số về mặt chức năng nhưng chúng lại khác nhau về mặt chỉ mục. Mảng kết hợp có chỉ mục dạng chuỗi giúp bạn có thể thiết lập liên kết chặt chẽ giữa key và value.
Cùng xem xét ví dụ dưới đây:
Để lưu trữ lương của nhân viên trong một mảng, bạn không nên lựa chọn mảng được lập chỉ mục bằng số.
Thay vào đó, hãy sử dụng tên nhân viên làm key trong mảng kết hợp và value sẽ là mức lương tương ứng của họ
Lưu ý: Không để mảng kết hợp trong dấu ngoặc kép khi in nếu không nó sẽ không trả về bất kỳ value nào
<html>
<body>
<?php
/* First method to associate create array. */
$salaries = array(“mohammad” => 2000, “qadir” => 1000, “zara” => 500);
echo “Salary of mohammad is “. $salaries[‘mohammad’] . “<br />”;
echo “Salary of qadir is “. $salaries[‘qadir’]. “<br />”;
echo “Salary of zara is “. $salaries[‘zara’]. “<br />”;
/* Second method to create array. */
$salaries[‘mohammad’] = “high”;
$salaries[‘qadir’] = “medium”;
$salaries[‘zara’] = “low”;
echo “Salary of mohammad is “. $salaries[‘mohammad’] . “<br />”;
echo “Salary of qadir is “. $salaries[‘qadir’]. “<br />”;
echo “Salary of zara is “. $salaries[‘zara’]. “<br />”;
?>
</body>
</html>
Và kết quả sẽ như sau:
Salary of mohammad is 2000
Salary of qadir is 1000
Salary of zara is 500
Salary of mohammad is high
Salary of qadir is medium
Salary of zara is low
Mảng đa chiều
Mỗi phần tử trong mảng đa chiều trong PHP cũng có thể là một mảng. Và mỗi phần tử trong mảng con cũng có thể là một mảng,…
Các giá trị trong mảng đa chiều trong PHP được tiếp cận bằng cách sử dụng chỉ mục đa chiều.
Trong ví dụ dưới đây, tôi tạo một mảng hai chiều để lưu trữ điểm của ba học sinh ở ba môn học.
Ví dụ này là một mảng kết hợp. Tuy nhiên, bạn cũng có thể tự tạo ra mảng chỉ số
<html>
<body>
<?php
$marks = array(
“mohammad” => array (
“physics” => 35,
“maths” => 30,
“chemistry” => 39
),
“qadir” => array (
“physics” => 30,
“maths” => 32,
“chemistry” => 29
),
“zara” => array (
“physics” => 31,
“maths” => 22,
“chemistry” => 39
)
);
/* Accessing multi-dimensional array values */
echo “Marks for mohammad in physics : ” ;
echo $marks[‘mohammad’][‘physics’] . “<br />”;
echo “Marks for qadir in maths : “;
echo $marks[‘qadir’][‘maths’] . “<br />”;
echo “Marks for zara in chemistry : ” ;
echo $marks[‘zara’][‘chemistry’] . “<br />”;
?>
</body>
</html>
Và kết quả sẽ như sau:
Marks for mohammad in physics : 35
Marks for qadir in maths : 32
Marks for zara in chemistry : 39
Các hàm xử lý mảng trong PHP
Dưới đây là bảng danh sách các hàm xử lý mảng trong PHP và chức năng của chúng
STT | Hàm | Chức năng |
1 | array_change_key_case | Thay đổi kiểu chữ in hoa, in thường của tất cả các key trong một mảng |
2 | array_chunk | Chia mảng thành nhiều phần |
3 | array_column | Trả về các value từ một cột riêng lẻ trong mảng đầu vào |
4 | array_combine | Tạo một mảng bằng cách sử dụng một mảng làm key và những mảng khác làm value của nó |
5 | array_count_values | Đếm tất cả các value của một mảng |
6 | array_diff_assoc | Chỉ ra sự khác biệt của các mảng bằng cách kiểm tra chỉ mục bổ sung |
7 | array_diff_key | Chỉ ra sự khác biệt của các mảng bằng cách so sánh các key |
8 | array_diff_uassoc | Chỉ ra sự khác biệt giữa các mảng bằng cách sử dụng kiểm tra chỉ mục bổ sung được thực hiện bởi một hàm gọi lại do người dùng chỉ định |
9 | array_diff_ukey | Chỉ ra sự khác biệt giữa các mảng bằng cách sử dụng hàm gọi trên các key được so sánh |
10 | array_diff | Chỉ ra sự khác biệt giữa các mảng |
11 | array_fill_keys | Điền các value, key được chỉ định vào một mảng |
12 | array_fill | Điều các value vào một mảng |
13 | array_filter | Lọc các phần tử của một màng bằng cách sử dụng hàm gọi lại |
14 | array_flip | Trao đổi tất cả các key với các value liên kết của chúng trong một mảng |
15 | array_intersect_assoc | Chỉ ra giao điểm của các mảng bằng cách kiểm tra chỉ mục bổ sung |
16 | array_intersect_key | Chỉ ra giao điểm của các hàm bằng cách so sánh các key |
17 | array_intersect_uassoc | Chỉ ra giao điểm của các mảng bằng cách kiểm tra chỉ mục bổ sung, sử dụng hàm gọi lại để so sánh các chỉ mục này |
18 | array_intersect_ukey | So sánh các key bằng cách sử dụng hàm gọi lại để tìm ra giao điểm của các mảng |
19 | array_intersect | Chỉ ra giao điểm của các mảng |
20 | array_key_exists | Kiểm tra xem key hoặc chỉ mục được cung cấp có tồn tại trong mảng hay không |
21 | array_key_first | Nhận key đầu tiên của mảng |
22 | array_key_last | Nhận key cuối cùng của mảng |
23 | array_keys | Trả về tất cả các key hoặc một tập hợp con các key nằm trong mảng |
24 | array_map | Áp dụng lệnh gọi lại cho các phần tử nằm trong mảng được cung cấp |
25 | array_merge_recursive | Hợp nhất một hoặc nhiều mảng theo phương pháp đệ quy |
26 | array_merge | Hợp nhất một hoặc nhiều mảng |
27 | array_multisort | Sắp xếp các mảng nhiều hoặc đa chiều |
28 | array_pad | Đệm một mảng đến độ dài được chỉ định bằng một value |
29 | array_pop | Loại bỏ phần tử ra khỏi phần cuối của mảng |
30 | array_product | Tính toán tích các giá trị trong một mảng |
31 | array_push | Đẩy một hoặc nhiều phần tử về cuối mảng |
32 | array_rand | Lấy một hoặc nhiều key ngẫu nhiên từ một mảng |
33 | array_reduce | Giảm nhiều lần để mảng thành một value đơn bằng cách sử dụng hàm gọi lại. |
34 | array_replace_recursive | Thay thế các phần tử từ các mảng đã được truyền vào mảng đầu tiên theo phương pháp đệ quy |
35 | array_replace | Thay thế các phần tử từ các mảng đã được truyền vào mảng đầu tiên |
36 | array_reverse | Trả về một mảng có các phần tử được sắp xếp theo thứ tự ngược lại |
37 | array_search | Tìm kiếm mảng cho một value được chỉ định và trả về key tương ứng đầu tiên nếu thành công |
38 | array_shift | Dịch chuyển một phần tử ra khỏi đầu mảng |
39 | array_slice | Trích xuất một phần của mảng |
40 | array_splice | Xóa một phần của mảng và thay thế nó bằng một phần khác |
41 | array_sum | Tính tổng các value trong một mảng |
42 | array_udiff_assoc | Chỉ ra sự khác biệt giữa các mảng bằng cách kiểm tra chỉ mục bổ sung, sử dụng hàm gọi lại để so sánh dữ liệu |
43 | array_udiff_uassoc | Chỉ ra sự khác biệt giữa các mảng bằng cách kiểm tra chỉ mục bổ sung, sử dụng hàm gọi lại để so sánh dữ liệu và chỉ mục |
44 | array_udiff | Chỉ ra sự khác biệt giữa các mảng bằng cách sử dụng hàm gọi lại để so sánh dữ liệu |
45 | array_uintersect_assoc | Chỉ ra giao điểm của các mảng bằng cách kiểm tra chỉ mục bổ sung, sử dụng hàm gọi lại để so sánh dữ liệu |
46 | array_uintersect_uassoc | Chỉ ra giao điểm của các mảng bằng cách kiểm tra chỉ mục bổ sung, sử dụng hàm gọi riêng biệt lại để so sánh dữ liệu và chỉ mục |
47 | array_uintersect | Chỉ ra giao điểm của các mảng, sử dụng hàm gọi lại để so sánh dữ liệu |
48 | array_unique | Loại bỏ các value trùng lặp trong một mảng |
49 | array_unshift | Thêm một hoặc nhiều phần tử vào đầu mảng |
50 | array_values | Trả về tất cả value của một mảng |
51 | array_walk_recursive | Áp dụng hàm do người dùng cung cấp theo phương pháp đệ quy cho tất cả thành viên của mảng |
52 | array_walk | Áp dụng hàm cho người dùng cung cấp cho tất cả thành viên của mảng |
53 | array | Tạo một mảng |
54 | arsort | Sắp xếp một mảng theo thứ tự ngược lại nhưng vẫn đảm bảo liên kết chỉ mục |
55 | asort | Sắp xếp một mảng và đảm bảo liên kết chỉ mục |
56 | compact | Tạo mảng chứa các biến và value của chúng |
57 | count | Đếm số phần tử trong mảng PHP, hoặc bất cứ thứ gì trong một đối tượng |
58 | current | Trả về phần tử hiện tại trong mảng |
59 | each | Trả về cặp key và value hiện tại của một mảng và nâng cấp con trỏ mảng |
60 | end | Đặt con trỏ nội bộ của một mảng vào phần tử cuối cùng của nó |
61 | extract | Nhập các biến vào bảng ký hiệu hiện tại của mảng |
62 | in_array | Kiểm tra một value có tồn tại trong mảng hay không |
63 | key_exists | Tạo bí danh cho hàm array_key_exists |
64 | key | Tìm một key trong mảng |
65 | krsort | Sắp xếp mảng sau khi key đã được sắp xếp theo thứ tự ngược lại |
66 | ksort | Sắp xếp mảng theo key |
67 | list | Gắn các biến như thể chúng là một mảng |
68 | natcasesort | Sắp xếp mảng bằng thuật toán “thứ tự tự nhiên” mà không phân biệt chữ hoa, chữ thường |
69 | natsort | Sắp xếp mảng bằng thuật toán “thứ tự tự nhiên” |
70 | next | Nâng cấp con trỏ nội bộ của mảng |
71 | pos | Tạo bí danh cho hàm hiện tại |
72 | prev | Cuộn lại con trỏ nội bộ |
73 | range | Tạo một mảng chứa một loạt phần tử |
74 | reset | Đặt con trỏ nội bộ của mảng vào phần tử đầu tiên của nó |
75 | rsort | Sắp xếp mảng theo thứ tự ngược lại |
76 | shuffle | Xáo trộn một mảng |
77 | sizeof | Tạo bí danh cho hàm count |
78 | sort | Sắp xếp mảng |
79 | uasort | Sắp xếp mảng bằng hàm so sánh do người dùng xác định nhưng vẫn duy trì liên kết chỉ mục |
80 | uksort | Sắp xếp mảng theo các key bằng cách sử dụng hàm so sánh do người dùng xác định |
81 | usort | Sắp xếp mảng theo value bằng cách sử dụng hàm so sánh do người dùng xác định |
Học cách ứng dụng mảng trong lập trình web thực tế tại Ironhack Việt Nam
Nếu muốn tìm hiểu kiến thức về lập trình, đặc biệt là cách ứng dụng array PHP vào thực tế, từ con số 0 thì Ironhack chính là sự lựa chọn đáng tin cậy dành cho bạn.
Ironhack có các khóa học lập trình PHP từ cơ bản đến nâng cao. Bên cạnh đó, còn tư vấn lộ trình học tập tùy thuộc vào trình độ và định hướng của mỗi học viên.
Ironhack ứng dụng phương pháp Learning by doing vào giảng dạy, giúp học viên củng cố kiến thức lý thuyết thông qua các vấn đề, dự án thực tế.
Chỉ với 120 ngày học, học viên có cơ hội trở thành lập trình viên front-end, lập trình viên back-end và thậm chí là lập trình viên full-stack.
Đặc biệt, Ironhack còn cam kết hỗ trợ trong quá trình học viên thực tập tại các công ty công nghệ.
Bên cạnh đó, hoàn trả học phí nếu sau khi kết thúc khóa học, học viên không thể tìm được công việc đúng chuyên môn.
Kết luận
Hy vọng qua bài viết này, bạn đã hiểu rõ hơn về mảng trong PHP là gì và biết được một số hàm xử lý mảng thông dụng.
Nếu bạn mong muốn trở thành một developer chuyên nghiệp thì hãy nhanh chóng vạch ra lộ trình học tập càng sớm càng tốt nhé.